OpenID協議

背景

當咱們要使用一個網站的功能時,通常都須要註冊想用的帳號。如今的互聯網應用不少,一段時間以後你會發現你註冊了一堆帳號密碼,根本記不住。html

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

雖然,如今的網站有提供短信驗證碼登陸技術,可是今天咱們要聊的是一個比較「古老」的技術——OpenID,看看以前的技術是怎麼解決密碼太多不便於管理的問題的。安全

寫這篇文章的目的更多的是興趣使然,由於實踐過程當中不太可能會單純的使用OpenID登陸,國內也幾乎沒見到支持OpenId的網站,至少主流的大廠沒支持。可是我我的以爲,用不到並不表明你必定不須要知道,瞭解技術發展的歷史,不只能夠給咱們借鑑,並且能提高本身的技術底蘊。(哈哈,有點裝X~~)框架

基礎概念

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

  • Authentication: 身份鑑別,簡稱認證,簡單講就是怎麼鑑定你就是某我的;性能

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

  • Authorisation: 資源訪問,簡稱受權,簡單講就是給某我的賦予某些權限;ui

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

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的網站

待更新...

參考

相關文章
相關標籤/搜索