本篇初淺的介紹啥是OIDC(OpenID Connect),用途在哪?與一些常見問題。
OIDC(OpenID Connect) 是基於OAuth 2.0 的一種身份認證協議,基於JSON 格式,良好的兼容REST。允許使用者端通過Authorization Server 驗證使用者身份,並以標準的ID_TOKEN 獲取使用者的基本資訊。它讓使用者能夠登錄到企業內的身分辨識,使用者成功辨識身分之後,再自動轉到相對應的應用程式,完成登入作業。讓使用者在不同的應用程式中遊走,卻不用到處註冊留下密碼。實現單一登入的一種機制。OIDC允許所有類型的用戶端, 包括基於瀏覽器的應用程式、行動裝置應用程式與需透關安裝於作業系統的應用程式。
簡單來說OAuth是Authorization,他是授權,不是認證。OIDC是在OAuth的協議上,進行身分的認證。
OAuth 2.0, 是一個協議,由IETF RFCs 6749 和6750(2012 年出版) 目的在支援身份驗證和授權協議的發展。它提供各種基於JSON 和HTTP 標準化的消息流。OpenID Connect 是在OAuth的基礎上,進行身份認證服務。
也就是說 OpenID Connect = 身份驗證+ OAuth 2.0
最後OpenID 規範發佈於2014 年2 月26 日。
Amazon、Google、Gakunin(日本網路大學認證)、mixi(日本的社群網站)、Yahoo、美國在線(AOL)、Salesforce。當然這些組織,也是催生OpenID Connect協議的推手。
OpenID Connect 是OpenID 的第三代技術。
OpenID Connect Provider(簡稱OIDC Provider):用於驗證使用者身份,並提供claim (這不知道怎麼翻譯才恰當)給RP 的系統或服務。
Relaying Party(簡稱RP):客戶端程式,請求使用者身份驗證,並從OIDC Provider 獲得claim 的應用或服務。
End-User:使用RP,且通過OIDC Provider 進行管理的使用者。
OpenID Connect 協議的設計是完全開放的、誰都可以成為IDP。大型企業內部也可以自己架設私有的IDP。
目前全球擁有最大帳號數的是Google和Microsoft等大型網路服務機構。也因為平台不論是行動裝置、網頁應用程式、私人企業內部桌面應用程式,都可以透過這些IDP提供的身分認證機制,故推動速度很快。
OpenID Connect Authorization Code Flow:在OAuth 2.0 authorization grant的基礎上,衍生出來的認證方式。適用於Server Side認證。
OpenID Connect Implicit Flow:在OAuth 2.0implicit grant的基礎上,衍生出來的認證方式,適用於Web-Browser方式。
簡單的說,樹大招風。當組織越大,裡面的帳號就更有被盜價值,增加網路身份盜竊的風險。若透過集中的方式保護的方式,降低管理帳號密碼等作業。當然若OIDC的Provider沒有管理好,那同等於雞蛋都放在同一個籃子裡的風險。
OpenID Connect 基於簡單的 JSON / REST 協議可以滿足這些案例。OpenID Connect 支持本地應用和行動裝置應用。而SAML只支援基於web 的應用程式(或繞個彎,用WebView去包)。由於OIDC與SAML的認證目的相同,更換到OIDC的話,還需要一段時間。看了多篇的文章,評估資訊業界SAML 和OpenID Connect 可能會並存相當一段時間。
OpenID Connect 可以標識多個不同的屬性,讓使用它們的應用程序來讀取,在讀取前,會先詢問你,就如下圖的核准步驟, 以便使用者可以同意( 或拒絕) 的共享這些信息。
在啟動OIDC必須設定一個redirect_uri,目的在成功認證後導到這個redirect_uri的網址。成功認證之後會取得一組有時效性的Tokey,並將作業流程導向原先預計的redirect_uri,redirect_uri裡面可以取解析Token,便可以去IDP取得使用者資訊,將這些資訊拋轉到你的應用程式。完成認證的作業。詳細的做法須再參考OAuth文件。
原文:http://openid.net/connect/faq/
以上文章由Ryan整理,若有侵犯版權、勘誤,請來信告知。