驗(yàn)證委托給外部身份提供者。這種模式可以簡(jiǎn)化開發(fā),最大限度地減少對(duì)用戶管理的要求,并提高了應(yīng)用程序的用戶體驗(yàn)。
用戶通常需要使用由提供,并通過與它們有商業(yè)關(guān)系的不同組織主持的多個(gè)應(yīng)用程序一起工作。但是,這些用戶可能被迫使用特定的(和不同的)的憑證,每一個(gè)。這可以:
用戶會(huì)相反,通常期望使用相同的憑證用于這些應(yīng)用。
實(shí)現(xiàn)了可以使用聯(lián)合身份的認(rèn)證機(jī)制。從應(yīng)用程序代碼中分離的用戶身份驗(yàn)證和身份驗(yàn)證委派到受信任的身份提供者,可以大大簡(jiǎn)化開發(fā),讓用戶使用更廣泛的身份提供者(國內(nèi)流離失所者),同時(shí)最大限度地減少管理開銷進(jìn)行身份驗(yàn)證。它也可以讓你清楚地分離的授權(quán)認(rèn)證。
可信身份提供者可能包括公司目錄,內(nèi)部部署聯(lián)合身份驗(yàn)證服務(wù),其他安全令牌服務(wù)(STS的)業(yè)務(wù)合作伙伴提供的,或社會(huì)身份提供者可以驗(yàn)證誰擁有用戶,例如,微軟,谷歌,雅虎或Facebook帳戶。
圖1示出了當(dāng)客戶端應(yīng)用程序需要訪問要求身份驗(yàn)證的服務(wù)的聯(lián)合身份模式的原理。該認(rèn)證是通過身份提供者(IDP),在演唱其工作與安全令牌服務(wù)(STS)的執(zhí)行。境內(nèi)流離失所者問題的主張有關(guān)身份驗(yàn)證的用戶的信息安全令牌。該信息被稱為權(quán)利要求中,包括用戶的身份,并且還可以包括其他信息,例如角色成員和更細(xì)粒度的訪問權(quán)限。
http://wiki.jikexueyuan.com/project/cloud-design-patterns/images/jim.png" alt="" />
圖1 - 聯(lián)合身份驗(yàn)證概述
該模型通常被稱為基于聲明的訪問控制。應(yīng)用程序和服務(wù)授權(quán)訪問基于包含在令牌中的權(quán)利要求的特征和功能。要求身份驗(yàn)證必須相信國內(nèi)流離失所者的服務(wù)??蛻舳藨?yīng)用程序的聯(lián)系人執(zhí)行身份驗(yàn)證境內(nèi)流離失所者。如果認(rèn)證成功,則的 IdP 返回包含用于識(shí)別用戶于 STS 的權(quán)利要求書的令牌(注意的 IdP 和 STS 可以是相同的服務(wù))。在 STS 可以改變和增大中根據(jù)預(yù)定義的規(guī)則,令牌中的權(quán)利要求書,將其返回到客戶端之前。然后,客戶端應(yīng)用程序可以將此令牌傳遞給服務(wù)作為其身份證明。
注意 在某些情況下可能會(huì)有額外的 STS 的信任鏈。例如,在微軟 Azure 的場(chǎng)景描述后,內(nèi)部部署 STS 信任 STS 另一個(gè)是負(fù)責(zé)訪問的身份提供者對(duì)用戶進(jìn)行認(rèn)證。這種方法是在企業(yè)的情況普遍,其中有一個(gè)本地 STS 和目錄。
聯(lián)合身份驗(yàn)證提供了一個(gè)基于標(biāo)準(zhǔn)的解決方案,在不同信任域身份的問題,并且可以支持單點(diǎn)登錄。它正在成為在所有類型的應(yīng)用,特別是云托管的應(yīng)用越來越普遍,因?yàn)樗С稚?,而不需要直接網(wǎng)絡(luò)連接到身份提供單點(diǎn)登錄。用戶不必輸入憑據(jù)為每一種應(yīng)用。這增加了安全性,因?yàn)樗柚沽嗽L問許多不同的應(yīng)用程序所需的憑據(jù)的擴(kuò)散,同時(shí)也隱藏了用戶的憑據(jù)所有,但原來的身份提供者。應(yīng)用程序只看到包含的令牌中的身份驗(yàn)證信息。
聯(lián)合身份也具有重大的優(yōu)點(diǎn),即人的身份和憑證管理是身份提供者的責(zé)任。應(yīng)用程序或服務(wù)并不需要提供身份管理功能。另外,在企業(yè)環(huán)境中,企業(yè)目錄不需要知道關(guān)于用戶(提供它信任的身份提供者),它去除了管理該目錄中的用戶身份的所有的管理開銷。
設(shè)計(jì)實(shí)現(xiàn)聯(lián)合身份驗(yàn)證的應(yīng)用程序時(shí)考慮以下因素:
此模式是非常適合的范圍內(nèi)的情況下,如:
這種模式可能不適合于下列情況:
組織舉辦了多租戶軟件即在 Azure 中的服務(wù)(SaaS)應(yīng)用程序。該應(yīng)用程序 incudes 一個(gè)網(wǎng)站,租戶可以用它來管理應(yīng)用程序?yàn)樽约旱挠脩?。該?yīng)用程序允許租戶使用由活動(dòng)目錄聯(lián)合服務(wù)(ADFS)產(chǎn)生的,當(dāng)用戶通過該組織自己的 Active Directory 身份驗(yàn)證的聯(lián)合身份訪問租戶的網(wǎng)站。圖2示出了該過程的概述。
http://wiki.jikexueyuan.com/project/cloud-design-patterns/images/jim2.png" alt="" />
圖2 - 用戶如何在大型企業(yè)用戶訪問應(yīng)用程序
在圖 2 所示的場(chǎng)景中,商戶驗(yàn)證自己的身份提供者(步驟1),在這種情況下 ADFS。在成功驗(yàn)證租客,ADFS 發(fā)出的令牌??蛻舳藶g覽器轉(zhuǎn)發(fā)此令牌至 SaaS 應(yīng)用的聯(lián)合提供者,其信任的租戶的 ADFS 發(fā)出令牌,以便取回的令牌是有效的 SaaS 的聯(lián)合提供者(步驟 2)。如果有必要,在 SaaS 聯(lián)合會(huì)提供商上執(zhí)行令牌中的權(quán)利要求書的權(quán)利要求到該應(yīng)用程序識(shí)別的新令牌返回給客戶機(jī)瀏覽器之前(步驟3)的變換。應(yīng)用程序信任的 SaaS 的聯(lián)合提供者發(fā)出的令牌,并使用在令牌中的權(quán)利要求書申請(qǐng)授權(quán)規(guī)則(步驟 4)。
租戶將不再需要記住不同的憑據(jù)來訪問應(yīng)用程序,以及管理員租戶的公司將能夠在自己的 ADFS 配置可以訪問應(yīng)用程序的用戶的列表。