對OpenID的學習和理解以及基本流程

OpenID是一個以用戶爲中心的開放的、分散的、自由的用於網絡上用戶身份驗證的身份驗證解決方案。這種方案可以讓用戶使用唯一的URL地址,就可以在任何支持OpenID認證的網站上登錄和應用,我們可以用它建立跨域、跨應用的登錄(如使用同一URL地址登錄你的blog和相冊等),它猶如一把“萬能鑰匙”可以登錄所有支持OpenID認證的網站和應用,甚至我們可以用自己的個人網站URL(如blog地址)作爲OpenID的登錄鑰匙,用戶可以清楚的控制哪些信息可以被共享,可以爲不同的網站和應用建立不同的賬戶和用戶資料,絕妙地解決了多個賬戶同步和管理地問題。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

目前AOLyahooBloggerLiveJournal等很多網站都已經支持OpenID,另外微軟也表示要支持OpenID。另外,OpenID增加了對Firefox3和微軟Windows Vista的支持。

 

 基本工作流程

下面的圖表展示了OpenID2.0草案的基本工作流程。它展示了在終端用戶 End User)、外部站點(Relying Party是個示例站點)和OpenID驗證服務器(OpenID Provider)之間的交互過程(最常見的認證流程)。

 

 

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

用戶登入外部站點的過程主要分爲以下六個步驟:

1.  用戶提供一個身份地址(以URL格式)給外部站點;

外部站點通過GETPOST方法獲得用戶地身份地址;

2.  外部站點通過身份地址取得OpenID驗證服務器地址;

一般情況下就是用戶輸入地URL地址;

3.  外部站點與OpenID驗證服務器進行關聯(可選);

爲了能夠與OpenID驗證服務器安全的通信,外部站點需要向OpenID驗證服務器請求一個協議。如果有現成的可以使用的協議,則用現有的協議,否則,通過Diffie Hellman的方法獲得一個共享密匙。被標爲可選的,這是因爲OpenID協議還允許外部站點直接請求認證(不作關聯)、並且接着請求對認證信息進行驗證。這樣外部站點可以不保有關聯權柄信息,以實現無狀態通訊。而這種方式被推薦用於執行與OpenID服務器之間的相關通訊,但如果不能使用此方式的話,就必須創建上面講的關聯方式。

4.  外部站點將用戶重定向到OpenID驗證服務器;

OpenID驗證服務器接受一個包含所有外部站點需要用來驗證用戶的信息,如果用戶已經登陸(有COOKIE)並且他已經同意發送他的身份信息給應用服務器的話,第5步可以跳過;

請注意: 外部站點並沒有直接發送HTTP請求到OpenID認證服務器,而是重定向到OpenID認證服務器頁面。由於這樣使得OpenID認證服務器能夠從用戶瀏覽器中讀取cookie而沒有將任何認證細節泄露給外部站點,因此這個過程是安全的。

5.  OpenID驗證服務器迴應外部站點地認證請求;

OpenID驗證服務器通過COOKIE或用戶輸入用戶名+密碼驗證用戶是否登錄。登錄後判斷是否允許外部站點的認證請求,如已配置過則直接返回認證響應信息;如果沒有配置過則顯示判斷頁面,在頁面上顯示外部站點的資料用戶自己的身份資源,讓用戶選擇是否允許響應外部站點的請求,以及用那種身份來響應,最後返回用戶選擇的認證響應信息;

6.  OpenID驗證服務器重定向外部站點;

外部站點驗證發自OpenID驗證服務器的間接認證迴應信息。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章