OpenID規范文檔中的介紹:
  OpenID 認證提供了一種方式,可以讓用戶證明自己對某個 Identifier 擁有控制權。 它不需要 Relying Party 去訪問用戶的憑據比如密碼或者其他的敏感信息比如電子郵件地址等。 
  OpenID 是分散的。不需要一個中央官方機構批准或注冊 Relying Parties 或 OpenID Providers。 最終用戶可以自由地選擇使用哪個 OpenID Provider,並能在他們更換 OpenID Providers 時維護自己的 Identifier。 
  OpenID 認證僅僅使用標准的 HTTP(S) 請求和響應, 因此它不需要 User-Agent 具有特殊能力或者其他客戶端軟件。 OpenID 不和 cookies 的使用或者 Relying Party 的其他任何具體機制或 OpenID Provider 的會話管理掛鈎。 雖然使用該協議沒有必要擴展 User-Agents,但可以簡化用戶操作。 
  用戶信息或者其他信息的交換不包括在該規范中,在此協議上附加協議形成一個框架可解決此問題。 OpenID 認證的目的是提供一個基礎服務,使它能在自由和分散的方式下攜帶用戶數字標識。
介紹中涉及到了很多名詞,比如Relying Parties,這些都代表什么意思呢,下面就介紹下OpenID中最重要的三種角色:
OP【OpenID Provider】: OpenID提供者,提供對用戶鑒權功能
RP【Relying Party】: 依賴方,直接服務提供者,需要信任OP鑒權的結果
UA【User Agent】:終端用戶,想使用RP服務的用戶
三者間的關系就是:讓UA在OP登陸,並使用RP提供的服務;
UA和OP/RP交互的時序圖如下:

OP和RP在初次交互的過程中,需要建立一種關聯關系Association,這就涉及到安全性的問題,OpenID規范中指出,在Association會話建立過程中,采用了 Diffie-Hellman密鑰一致協議 來保證會話的安全性,主要有"no-encryption"、"DH-SHA1"和"DH-SHA256"三種類型,注意第一種類型只能在https傳輸協議下才能選擇;
而在雙方互相信任之后,則采用更為簡單和快速的HMAC-SHA算法來進行簽名,有"HMAC-SHA1"和"HMAC-SHA256"兩種選擇;需要注意的是在選擇兩類算法時兩者的長度需要保持一致;
PS:OpenID認證2.0官方文檔地址:http://www.openid.net.cn/specs/openid-authentication-2_0-zh_CN.html
OpenID4JAVA:http://code.google.com/p/openid4java/
