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