OpenID協議

背景

當我們要使用一個網站的功能時,一般都需要註冊想用的賬號。現在的互聯網應用很多,一段時間之後你會發現你註冊了一堆賬號密碼,根本記不住。

你可能會想到所有的網站都用同一套用戶名和密碼,這樣雖然能解決賬號管理的問題,但也加大了賬號密碼泄露的風險。

雖然,現在的網站有提供短信驗證碼登錄技術,但是今天我們要聊的是一個比較“古老”的技術——OpenID,看看之前的技術是怎麼解決密碼太多不便於管理的問題的。

寫這篇文章的目的更多的是興趣使然,因爲實踐過程中不太可能會單純的使用OpenID登錄,國內也幾乎沒見到支持OpenId的網站,至少主流的大廠沒支持。但是我個人覺得,用不到並不代表你一定不需要知道,瞭解技術發展的歷史,不僅可以給我們借鑑,而且能提升自己的技術底蘊。(哈哈,有點裝X~~)

基礎概念

在正式介紹OpenID之前,我再囉嗦幾個基礎概念。

  • Authentication: 身份鑑別,簡稱認證,簡單講就是怎麼鑑定你就是某個人;

  • Authorization Server/Identity Provider:把負責 認證的服務 稱爲 AuthorizationServer 或者 IdentityProvider,簡稱IDP;

  • Authorisation: 資源訪問,簡稱授權,簡單講就是給某個人賦予某些權限;

  • Service Provider/Resource Server:把負責提供資源(API調用)的服務稱爲 ResourceServer 或者 ServiceProvider,簡稱 SP

OpenID相關的幾個概念

  • User:網站訪問者操作的瀏覽器
  • RP:Relying Party ;服務提供者,就是用戶要訪問的網站。
  • OP:OpenID Provider ;OpenID提供者,就是提供OpenID註冊的服務商。

OpenID簡介

OpenID 是由LiveJournal和SixApart開發的一套身份驗證系統,是一個以用戶爲中心的數字身份識別框架,它具有開放、分散、自由等特性。

OpenID 的創建基於這樣一個概念:我們可以通過 URI (又叫 URL 或網站地址)來認證一個網站的唯一身份,同理,我們也可以通過這種方式來作爲用戶的身份認證。它不基於某一應用網站的註冊程序,而且不限制於單一網站的登錄使用。OpenID帳號可以在任何OpenID應用網站使用,從而避免了多次註冊、填寫身份資料的繁瑣過程。簡單言之,OpenID就是一套以用戶爲中心的分散式身份驗證系統,用戶只需要註冊獲取OpenID之後,就可以憑藉此OpenID帳號在多個網站之間自由登錄使用,而不需要每上一個網站都需要註冊帳號。

OpenID的工作流程

假設你已經擁有一個在A網站(A網站就是OP角色)註冊獲得的OpenID帳號,B網站(B網站就是RP角色)支持OpenID帳號登錄使用,而且你從未登錄過。此時你在B網站的相應登錄界面輸入你的OpenID帳號進行登錄的時候,瀏覽器會自動轉向A網站的某個頁面進行身份驗證。這時你只要輸入你在A網站註冊時候提供的密碼登錄A網站,對B網站進行驗證管理(永久允許、只允許一次或者不允許)後,頁面又會自動轉到B網站。如果你選擇了允許,那就會登錄進入B網站。這個時候你就可以以你的OpenID帳戶身份實現B網站的所有功能。

上面描述了B網站使用A網站提供的OpenID進行登錄,你也可以使用這個OpenId登錄其他支持OpenID的網站。

OpenID的獲取流程

  • 首先用戶選擇一個OpenID 服務提供者,來註冊 OpenID 帳號(跟傳統的網站註冊無異),註冊後用戶得到一個 OpenID網址(OpenID URL),如http:/collinye.openid.com ,可以簡單的理解爲用戶名。
  • 訪問支持 OpenID 的網站,在登錄時,輸入你的 OpenID網址,通常此類登錄頁面的輸入框會有如上圖所示 OpenID 標誌,然後點登錄。
  • 之後,會跳轉你的OpenID 服務提供者的網站,並要求你輸入註冊時填寫的密碼,驗證密碼通過後會詢問你是否允許該網站使用你的 OpenID 進行登錄,經過允許後會跳轉回原網站,並顯示登錄成功,之後你就可以以註冊者的身份訪問該網站。

認證流程

  • 終端用戶請求登錄RP網站,用戶選擇了以OpenID方式來登錄;
  • RP將OpenID的登錄界面返回給終端用戶;
  • 用戶輸入OpenID,RP網站對用戶的OpenID進行標準化,此過程比較複雜,因爲OpenID可能是URI,也可能是XRI,所以標準化方式各不相同;
  • RP和OP進行連接;
  • RP請求OP對用戶身份進行登錄檢查,OP對用戶登錄檢查,如果用戶還沒有登錄,請求用戶進行登錄認證;
  • 用戶登錄OP、登錄完檢測RP請求哪些信息,如果沒有需有用補填(OpenID主要負責認真,用戶首次登陸註冊可能還需要其他必要信息,可以在這個步驟補全);

  • OP將登錄結果返回給RP,RP對OP的結果進行分析,RP分析後,如用戶合法,則返回用戶登錄成功,可以使用RP服務。

OPENID優缺點

優點

對用戶

  1. 簡化註冊登錄流程:一定程度上避免了重複註冊、填寫身份資料的繁瑣過程,不需要註冊郵件確認,登錄更快捷。

  2. 一處註冊,處處通行:免去記憶大量賬號的麻煩,一個OpenID就在任何支持OpenID的網站自由登錄。

  1. 減少密碼泄露風險:頻繁登錄各種網站,容易被垃圾網站暗地裏收集密碼和資料,或者冒充用戶身份發送垃圾信息。

  2. 用戶擁有賬號信息控制權:根據對網站的信任程度,用戶可以清楚的控制哪些profile信息可以被共享,例如姓名、地址、電話號碼等。

對網站

  1. 共享用戶資源:給所有支持 OpenID 的網站帶來了價值。

  2. 已經有相當數量的高端註冊用戶可以直接使用,不必從零開始;

  3. 可以不負擔自己建立會員系統或登錄功能所需要的開發成本、機器、帶寬、安全費用;

  4. 用戶數據是安全的,用戶數據不統一存儲,用戶可以任意選擇、更換存儲的server。沒有組織,沒有任何一個地方可以做root,沒有任何一個機構或者個人能夠從這裏面獲利。

缺點

  1. 任何人都可以建立一個網站提供OpenID驗證服務,而網站性能參差不齊,導致OpenID的驗證過程不是很穩定。

  2. 如果提供OpenID驗證服務的網站突然關閉的話,可能會導致大量用戶無法使用多個網站的服務。

  3. 目前幾乎所有支持OpenID的網站都很謹慎地將其做爲一種可供選擇的輔助登錄方法,這會在很大程度上阻礙OpenID的發展。

  4. 目前支持OpenID的網站還不多,其獨特的使用方法並不被多數用戶所熟悉。

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

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

OpenID發展歷程--OIDC

原始的OpenID,也就是OpenID 1.0,它並不是真正的商業應用,但這個協議讓行業領導者思考什麼是可能的。

OpenID 2.0設計更爲完善,提供良好的安全性保證。然而,其自身存在一些設計上的侷限性,最致命的是其中依賴方必須是網頁,但不能是本機應用程序;此外它還要依賴XML,這些都會導致一些應用問題。

OIDC,OpenID Connect是OpenID的第三代技術。OpenID Connect從SAML和OpenID 1.0/2.0中做了大量借鑑。OIDC不僅支持用戶認證,還支持用戶授權。

後面的文章中會介紹OIDC的相關內容。

支持OpenID的網站

待更新...

參考

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