當咱們要使用一個網站的功能時,通常都須要註冊想用的帳號。如今的互聯網應用不少,一段時間以後你會發現你註冊了一堆帳號密碼,根本記不住。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相關的幾個概念設計
OpenID 是由LiveJournal和SixApart開發的一套身份驗證系統,是一個以用戶爲中心的數字身份識別框架,它具備開放、分散、自由等特性。
OpenID 的建立基於這樣一個概念:咱們能夠經過 URI (又叫 URL 或網站地址)來認證一個網站的惟一身份,同理,咱們也能夠經過這種方式來做爲用戶的身份認證。它不基於某一應用網站的註冊程序,並且不限制於單一網站的登陸使用。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的網站自由登陸。
減小密碼泄露風險:頻繁登陸各類網站,容易被垃圾網站暗地裏收集密碼和資料,或者冒充用戶身份發送垃圾信息。
用戶擁有帳號信息控制權:根據對網站的信任程度,用戶能夠清楚的控制哪些profile信息能夠被共享,例如姓名、地址、電話號碼等。
對網站
共享用戶資源:給全部支持 OpenID 的網站帶來了價值。
已經有至關數量的高端註冊用戶能夠直接使用,沒必要從零開始;
能夠不負擔本身創建會員系統或登陸功能所須要的開發成本、機器、帶寬、安全費用;
用戶數據是安全的,用戶數據不統一存儲,用戶能夠任意選擇、更換存儲的server。沒有組織,沒有任何一個地方能夠作root,沒有任何一個機構或者我的可以從這裏面獲利。
任何人均可以創建一個網站提供OpenID驗證服務,而網站性能良莠不齊,致使OpenID的驗證過程不是很穩定。
若是提供OpenID驗證服務的網站忽然關閉的話,可能會致使大量用戶沒法使用多個網站的服務。
目前幾乎全部支持OpenID的網站都很謹慎地將其作爲一種可供選擇的輔助登陸方法,這會在很大程度上阻礙OpenID的發展。
目前支持OpenID的網站還很少,其獨特的使用方法並不被多數用戶所熟悉。
密碼安全度下降,只要OpenID的密碼被泄露,基本上全部的網站都被泄露。這與"一處註冊,處處使用"造成對應,即"一處泄露,處處泄露"。
OpenID並不是真正的Open,不少網站表面上支持OpenID,實際上,仍是不斷的騷擾OpenID用戶,在他們網站上註冊賬號,在背後偷偷的沉澱OpenID用戶。因此,就目前來講,OpenID對於集團內各子公司用戶體系的打通仍是可行的,對於與外部公司是否使用OpenID還得謹慎點。
原始的OpenID,也就是OpenID 1.0,它並非真正的商業應用,但這個協議讓行業領導者思考什麼是可能的。
OpenID 2.0設計更爲完善,提供良好的安全性保證。然而,其自身存在一些設計上的侷限性,最致命的是其中依賴方必須是網頁,但不能是本機應用程序;此外它還要依賴XML,這些都會致使一些應用問題。
OIDC,OpenID Connect是OpenID的第三代技術。OpenID Connect從SAML和OpenID 1.0/2.0中作了大量借鑑。OIDC不只支持用戶認證,還支持用戶受權。
後面的文章中會介紹OIDC的相關內容。
待更新...