什么是單點登錄?
SSO 的類型
單點登錄 SSO 的好處
什么是 SAML(安全斷言標記語言)?
SAML 術語
什么是 OAuth2?
什么是 OpenID Connect (OIDC)?
OIDC 用于對用戶進行身份驗證
啟用 OAuth2 和 OIDC 的示例登錄頁面
OAuth2 流與 OIDC 集成
何時使用 SAML 以及何時使用 OAuth2(使用 OIDC)
在本文中,我們將了解單點登錄 (SSO) 和 SSO 廣泛使用的兩種協議,即 SAML 和OAuth2。這是任何程序員都需要理解的復雜領域之一。
什么是單點登錄?
單點登錄 (SSO) 是用戶可以使用一組憑據登錄多個應用程序的過程。考慮到如今網站的數量以及其中大多數都要求進行身份驗證,這是一個方便且高效的功能。我們都知道,我們無法為每個應用程序跟蹤如此多的憑據集。SSO 來救援了!?。∮脩魺o需一遍又一遍地建立身份,只需對用戶進行一次身份驗證,然后就可以訪問多個不同的服務和應用程序。一個這樣的功能的例子是谷歌。只需一次登錄,您就可以訪問他們的所有服務,例如 Gmail、照片、云端硬盤等等。其他應用程序還允許用戶使用 Google 登錄進行身份驗證,前提是他們的系統與 Google、Facebook 等身份提供商集成
SSO 的類型
提供 SSO 的標準和協議有很多,其中一些著名的是
安全訪問標記語言 (SAML)
開放授權 (OAuth)
開放 ID 連接 (OIDC)
Web 服務聯合 (WS-Federation)
Kerberos
在本文的后面部分,我們將詳細介紹 SAML、OAuth2 和 OIDC。
單點登錄 SSO 的好處
SSO 有很多好處,如下所示
降低訪問第三方網站的風險
減少為同一身份重新輸入密碼所花費的時間
更簡單的審計管理和使用
更好的行政控制
提高用戶生產力
更好的網絡安全
減少攻擊面
無縫且安全的用戶訪問
什么是 SAML(安全斷言標記語言)?
SAML 是一種基于 XML 的標準,用于在 IdP 和服務提供商之間交換身份驗證和授權數據,以驗證用戶的身份和權限,然后授予或拒絕他們對服務的訪問權限。SAML 是一種開放標準,已成為 SSO 的核心標準之一。SAML 使用身份提供者發送給服務提供者的稱為斷言(包含用戶授權)的 XML 文檔。SAML 2.0 于 2005 年推出,并且仍然是該標準的當前版本。SAML 2.0 專門針對 Web 應用程序進行了優化,使信息能夠通過 Web 瀏覽器傳輸
SAML 術語
IdP——身份提供者
SP - 服務提供商
用戶——使用系統訪問服務提供商服務的用戶
典型的 SAML 工作流由 IdP、SP 和用戶組成。用戶信息作為斷言發送。讓我們假設用戶有一個 Idp 帳戶并擁有有效的憑據
讓我們將上圖分解為多個步驟,以便于理解
用戶轉到服務提供商并單擊 SAML 登錄
SP 將請求重定向到身份提供者
身份提供者向用戶顯示登錄頁面以輸入憑據
輸入憑據后,SAML IdP 會驗證其 Active Directory 或數據庫中的憑據
驗證后,SAML 響應會以 XML 格式發送帶有斷言,如上所示
然后用戶將登錄到應用程序
什么是 OAuth2?
OAuth 是比 SAML 更新的標準,由 Google 和 Twitter 于 2006 年開始聯合開發。它的開發部分是為了彌補 SAML 在移動平臺上的不足,并且基于JSON而不是 XML。OAuth2 廣泛使用 JWT 令牌,因此比 SAML 更輕、更快。
在深入探討 OAuth2 和 OIDC 之前,讓我們先看看使用的術語OAuth2 術語
授權服務器——(例如:谷歌)
資源服務器——(例如:Bitbucket)
資源所有者——使用系統從資源服務器訪問服務的用戶(例如:Bitbucket 用戶)
OAuth2 協議允許授權服務器在獲得資源所有者(用戶)的同意后向第三方應用程序頒發訪問令牌這些訪問令牌被 Bitbucket、Slack 等第三方應用程序用于訪問資源提供的資源服務器。
如果您已注冊新應用程序并同意從 Google/Facebook 等導入聯系人,則您必須已經使用過 OAuth2。您可能使用了要求您在 Facebook/Instagram 等上分享您的帖子或照片的功能。這是OAuth2 協議,提供安全的委托訪問,無需共享憑據OAuth2 僅用于授權而不用于身份驗證
什么是 OpenID Connect (OIDC)?
使用 OpenID,用戶的憑據僅在瀏覽器路由請求后由授權服務器使用。驗證后,將向用戶頒發訪問令牌,用戶可以通過該令牌訪問多個應用程序,而無需與每個應用程序共享其憑據。如果您已使用 Google / Facebook / Twitter 登錄名登錄應用程序,則您必須已經使用過 OIDC。OpenID Connect 是組織用來驗證用戶身份的開放標準。
OIDC 用于對用戶進行身份驗證
將 OIDC 與 OAuth2 結合使用OAuth 是一種開放標準的授權協議,用于授權用戶,OIDC 用于驗證用戶。OIDC 位于 OAuth 2.0 之上,以添加有關用戶的信息并啟用 SSO 流程。它允許跨多個應用程序使用一個登錄會話。例如,如下所示,您可以使用社交媒體登錄來訪問應用程序,而無需在應用程序中創建帳戶
啟用 OAuth2 和 OIDC 的示例登錄頁面
OAuth2 流與 OIDC 集成
上圖解釋了當您使用 Google 登錄應用程序時發生的整個過程。步驟的數量可能看起來很復雜,但整個過程在幾毫秒到幾秒內結束。讓我們一步一步地分解它。假設用戶已經有 Google 的登錄帳戶
用戶進入 Bitbucket 頁面登錄
用戶點擊使用 Google 登錄
瀏覽器將用戶重定向到 Google 登錄頁面
Google 顯示憑據頁面供用戶輸入憑據
用戶輸入谷歌憑據并點擊提交
Google 驗證憑據并生成訪問令牌并將其發送到瀏覽器
瀏覽器在Authorization Header中嵌入Access Token(Bearer Token),將用戶的登錄請求發送到BitBucket服務器
Bitbucket 服務器將聯系 Google 驗證訪問令牌并響應瀏覽器
現在用戶登錄到 Bitbucket 應用程序
何時使用 SAML 以及何時使用 OAuth2(使用 OIDC)
盡管 SAML 在企業設置中可能看起來更優越,但在某些情況下 OAuth 是有意義的。
政府應用程序的身份管理:政府數據的機密、敏感性質需要具有更強的安全性,而 SAML 將適合這種情況。例如:新加坡政府使用一個名為SingPass的基于 SAML 的系統作為其居民使用所有基于政府的服務的數字登錄名
用戶體驗是重中之重:OAuth2 最適合用戶體驗,因為它在移動設備上運行良好。而且它很輕。
移動和消費者應用程序:OAuth2 在移動設備和消費者應用程序上運行良好,因為會話往往更短
虛擬桌面基礎架構 (VDI) 實施:使用 SAML。VDI 將被企業內的許多員工使用。
資源需要臨時訪問:OAuth2 非常適合臨時訪問,因為它是為此目的而設計的
在本文中,我們看到了 SSO 的類型和優勢。然后我們深入研究了兩個著名的 SSO 協議,即 SAML 和 OAuth2。在探索OAuth2時,我們看到了 OAuth2 和 OIDC 之間的細微差別,然后看到了兩者結合的用例。本文以哪些協議可用于某些用例結束。
-
協議
+關注
關注
2文章
614瀏覽量
39804 -
SSO
+關注
關注
0文章
9瀏覽量
7573 -
SAML
+關注
關注
0文章
11瀏覽量
8279 -
單點登錄
+關注
關注
0文章
6瀏覽量
6398
原文標題:單點登錄必知的兩個著名協議:SAML、OAuth2
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于SAML單點登錄安全服務體系的應用研究
基于改進Kerberos的Web單點登錄方案
一種結合Multi-Agent的單點登錄模型
基于SAML的WEB單點登錄系統安全模型設計
基于Cookie的單點登錄技術
基于角色訪問控制的單點登錄模型研究與設計

一種基于Cookie的跨域單點登錄方案設計

單點登錄的實現方式有哪些

評論