程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> OpenID簡介

OpenID簡介

編輯:PHP基礎知識
 

也許大家都有這樣的經歷與煩惱:當你為了使用某個網站的服務時(若你還沒在該網站上注冊過),你不得不先注冊一個帳號。當你在一堆的網站上注冊帳號後,你必需面臨管理這些帳號的煩惱。也許你會這樣考慮,不同網站注冊的帳號信息都用同一個用戶名與密碼,這樣也許會減輕你的煩惱,但是卻給你帶來的安全隱患,一旦你的帳號在某個網站洩漏後。OpenID正式基於解決這類問題而提出的一個國際標准,用於打通各大網站之間的用戶體系。你可以使用某一網站的帳號去登錄另一網站,只要這些網站都是實現了OpenID的服務。目前Google,Yahoo,Flickr,AOL等都支持OpenId服務。2009年2月初,Facebook也宣布加入OpenId基金會。

 

一、OpenID簡介

        OpenID官方網站http://openid.net首頁對OpenID的介紹如下:OpenID is a free and easy way to use a single digital identity across the Internet. With one OpenID you can login to all your favorite websites and forget about online paperwork! 其大概意思就是說:OpenID是一個單一的、免費的數字身份標識,使用它,你就可以登錄你經常登錄的網站。

       OpenID提高了互聯網服務的用戶體驗。顯而易見,就終端用戶而言,OpenID降低了用戶管理多個網站帳號的煩惱,用戶可以享受類似單點登錄的體驗。對於企業來說,OpenID降低了用戶帳號管理的成本。對於應用開發者來說,OpenID是一個開放的、去中心化的,免費的、以用戶為中心的身份標識體系。Java的一個優勢是跨平台,大家都熟悉的那句話:Write Once,Run Anywhere(一次編寫,到處運行),同樣,OpenId的優勢是:Register Once, Use Anywhere(一處注冊,到處使用)。

       OpenId是一個以用戶為中心的數字身份識別框架,它具有開放、分散、自由等特性。OpenId的創建是基於這樣一個概念:我們可以通過URI(或者URL網址)來識別一個網站。同樣,我們也可以通過這樣的方式來識別一個用戶的身份。OpenId系統的身份認證就是通過URI來認證用戶身份。目前絕大部分網站都是通過用戶名與密碼來登錄認證用戶身份,這就要求大家在每個你要使用的網站上注冊一個帳號。如果使用OpenId,你可以在一個提供OpenId的網站上注冊一個OpenId,以後你可以使用這個OpenId去登錄支持OpenId的網站。這正是一處注冊,到處使用的體現。

 

二、OpenID相關術語

  • End User:終端用戶,使用OP與RP的服務
  • Relying Party依賴方:簡稱RP,服務提供者,需要OP鑒權終端用戶的身份
  • OpenID Provider:OpenID提供者,簡稱OP,對用戶身份鑒權
  • Identifier標識符:標識符可以是一個HTTP、HTTPS或者XRI(可擴展的資源標識)
  • User-Agent:實現了HTTP1.1協議的用戶浏覽器
  • OP Endpoint URL:OP鑒權的URL,提供給RP使用
  • OP Identifier:OP提供給終端用戶的一個URI或者XRI,RP根據OP Identifier來解析出OP Endpoint URL與OP Version
  • User-Supplied Identifier:終端用戶使用的ID,可能是OP提供的OpenID,也可以是在RP注冊的ID。RP可以根據User-Supplied Identifier來解析出OP Endpoint URL、OP Version與OP_Local Identifer
  • Claimed Identifier:終端用戶聲明自己身份的一個標志,可以是一個URI或者XRI
  • OP-Local Identifier:OP提供的局部ID

三、OpenID認證流程

 

      OpenID一個典型的應用場景就是:當終端用戶登錄一個支持OpenID的網站(RP)時,與在該網站進行用戶登錄方式不同(該終端用戶也許沒有在該網站注冊過),該用戶選擇了以OpenID的方式登錄該網站。OpenID是該用戶在另一個網站(OP)注冊的一個URL。RP就會根據用戶提供的OpenID去發現OP,然後請求該OP對該用戶身份進行鑒權。OP收到RP請求後,會要求用戶登錄OP認證頁面進行鑒權,鑒權後,OP會提醒該用戶是否容許外部網站對你鑒權。用戶同意後,OP將鑒權結果返回給RP。

下面就OpenID的認證流程進行簡要的介紹,下圖就是OpenID的認證流程:

     1. 終端用戶請求登錄RP網站,用戶選擇了以OpenID方式來登錄

     2. RP將OpenId的登錄界面返回給終端用戶

     3. 終端用戶以OpenID登陸RP網站

     4. RP網站對用戶的OpenID進行標准化,此過程非常負責。由於OpenID可能是URI,也可能是XRI,所以標准化方式各不相同。具體標准化過程是:如果OpenID以xri://、xri://$ip或者xri://$dns開頭,先去掉這些符號;然後對如下的字符串進行判斷,如果第一個字符是=、@、+、$、!,則視為標准的XRI,否則視為HTTP URL(若沒有http,為其增加http://)。

    5. RP發現OP,如果OpenId是XRI,就采用XRI解析,如果是URL,則用Yadis協議解析,若Yadis解析失敗,則用Http發現。

    6. RP跟OP建立一個關聯。兩者之間可以建立一個安全通道,用於傳輸信息並降低交互次數。

    7. OP處理RP的關聯請求

    8. RP請求OP對用戶身份進行鑒權

    9. OP對用戶鑒權,請求用戶進行登錄認證

    10. 用戶登錄OP

    11. OP將鑒權結果返回給RP

    12. RP對OP的結果進行分析

    13. RP分析後,如用戶合法,則返回用戶鑒權成功,可以使用RP服務

 

       以上就是OpenId認證流程簡介。OpenID4Java是一個開源庫,提供了OpenID框架。OpenID4Java是對OpenID1.1和2.0規范的實現,目前它通過code.google.com系統進行維護。此項目初始代碼是由Sxip捐獻出來的,而後Atlassian等公司參與進來,並為實現支持2.0規范(屬性交換規范)的API貢獻了大量的工作。OpenID4Java項目地址:http://code.google.com/p/openid4java/

 

四、Yahoo OpenID服務

       目前很多大公司如Google,Yahoo,AOL,Microsoft等等都支持OpenId。下面我們可以看看這個網站,他是支持openid,http://www.plaxo.com/

      我們點擊右上角的登錄按鈕,請求登錄該網站,登錄頁面如下圖所示:

      與傳統的登錄頁面不一樣的是,該登錄頁面還提供了以OpenID方式登錄的入口。我們選擇使用Yahoo用戶進行登錄,將跳轉到yahoo的登錄頁面,如下圖所示:

        輸入用戶名與密碼,Yahoo提示您,您將要登錄到外部網站Plaxo,請求您的確認,如下所示:

      同意後,您將以Yahoo OpenID登錄到plaxo網站。

 

五、OpenID的前景

        光從技術角度來考量OpenID的前景時,我們都對他充滿著信息,激情。OpenID的出現,確實很該用戶友好的體驗,更方便用戶暢游互聯網。但是,這只是技術上的考量。OpenID的最終用戶是網民們。OpenID提出到現在,有多少人知道有OpenID的存在,甚至連身邊的程序員們都很少知道,更不用說普普通通的網民們了。所以從技術化的東西到被大家所熟知的技術,OpenID還有很長的路要走。過去,國內也有不少技術人員對OpenID充滿著激情,但是他們的激情是短暫的,或者不能稱之為激情。總結起來,OpenID在以下某些方面還令人擔憂。

        一是:OpenID認知度太低,上面已解釋過。

        二是:密碼安全度降低,只要OpenID的密碼被洩露,基本上所有的網站都被洩露。這與"一處注冊,到處使用"形成對應,即"一處洩露,到處洩露"。

        三是:OpenID並非真正的Open,很多網站表面上支持OpenID,實際上,還是不斷的騷擾OpenID用戶,在他們網站上注冊帳號,在背後偷偷的沉澱OpenID用戶。所以,就目前來說,OpenID對於集團內各子公司用戶體系的打通還是可行的,對於與外部公司是否使用OpenID還得謹慎點。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved