(九)—— 聯(lián)合身份模式

2018-02-24 15:44 更新

云計(jì)算設(shè)計(jì)模式(九)——聯(lián)合身份模式

驗(yàn)證委托給外部身份提供者。這種模式可以簡(jiǎn)化開(kāi)發(fā),最大限度地減少對(duì)用戶(hù)管理的要求,并提高了應(yīng)用程序的用戶(hù)體驗(yàn)。

背景和問(wèn)題

用戶(hù)通常需要使用由提供,并通過(guò)與它們有商業(yè)關(guān)系的不同組織主持的多個(gè)應(yīng)用程序一起工作。但是,這些用戶(hù)可能被迫使用特定的(和不同的)的憑證,每一個(gè)。這可以:

  • 原因脫節(jié)的用戶(hù)體驗(yàn)。用戶(hù)經(jīng)常忘記登錄憑據(jù)時(shí),他們有很多不同的的。
  • 暴露安全漏洞。當(dāng)用戶(hù)離開(kāi)公司的帳戶(hù),必須立即取消設(shè)置。這是很容易忽略這在大型組織中。
  • 復(fù)雜的用戶(hù)管理。管理員必須管理憑據(jù)的所有用戶(hù),以及執(zhí)行等方面提供密碼提示的其他任務(wù)。

用戶(hù)會(huì)相反,通常期望使用相同的憑證用于這些應(yīng)用。

解決方案

實(shí)現(xiàn)了可以使用聯(lián)合身份的認(rèn)證機(jī)制。從應(yīng)用程序代碼中分離的用戶(hù)身份驗(yàn)證和身份驗(yàn)證委派到受信任的身份提供者,可以大大簡(jiǎn)化開(kāi)發(fā),讓用戶(hù)使用更廣泛的身份提供者(國(guó)內(nèi)流離失所者),同時(shí)最大限度地減少管理開(kāi)銷(xiāo)進(jìn)行身份驗(yàn)證。它也可以讓你清楚地分離的授權(quán)認(rèn)證。

可信身份提供者可能包括公司目錄,內(nèi)部部署聯(lián)合身份驗(yàn)證服務(wù),其他安全令牌服務(wù)(STS的)業(yè)務(wù)合作伙伴提供的,或社會(huì)身份提供者可以驗(yàn)證誰(shuí)擁有用戶(hù),例如,微軟,谷歌,雅虎或Facebook帳戶(hù)。

圖1示出了當(dāng)客戶(hù)端應(yīng)用程序需要訪(fǎng)問(wèn)要求身份驗(yàn)證的服務(wù)的聯(lián)合身份模式的原理。該認(rèn)證是通過(guò)身份提供者(IDP),在演唱其工作與安全令牌服務(wù)(STS)的執(zhí)行。境內(nèi)流離失所者問(wèn)題的主張有關(guān)身份驗(yàn)證的用戶(hù)的信息安全令牌。該信息被稱(chēng)為權(quán)利要求中,包括用戶(hù)的身份,并且還可以包括其他信息,例如角色成員和更細(xì)粒度的訪(fǎng)問(wèn)權(quán)限。

圖1 - 聯(lián)合身份驗(yàn)證概述

該模型通常被稱(chēng)為基于聲明的訪(fǎng)問(wèn)控制。應(yīng)用程序和服務(wù)授權(quán)訪(fǎng)問(wèn)基于包含在令牌中的權(quán)利要求的特征和功能。要求身份驗(yàn)證必須相信國(guó)內(nèi)流離失所者的服務(wù)??蛻?hù)端應(yīng)用程序的聯(lián)系人執(zhí)行身份驗(yàn)證境內(nèi)流離失所者。如果認(rèn)證成功,則的 IdP 返回包含用于識(shí)別用戶(hù)于 STS 的權(quán)利要求書(shū)的令牌(注意的 IdP 和 STS 可以是相同的服務(wù))。在 STS 可以改變和增大中根據(jù)預(yù)定義的規(guī)則,令牌中的權(quán)利要求書(shū),將其返回到客戶(hù)端之前。然后,客戶(hù)端應(yīng)用程序可以將此令牌傳遞給服務(wù)作為其身份證明。

注意 在某些情況下可能會(huì)有額外的 STS 的信任鏈。例如,在微軟 Azure 的場(chǎng)景描述后,內(nèi)部部署 STS 信任 STS 另一個(gè)是負(fù)責(zé)訪(fǎng)問(wèn)的身份提供者對(duì)用戶(hù)進(jìn)行認(rèn)證。這種方法是在企業(yè)的情況普遍,其中有一個(gè)本地 STS 和目錄。

聯(lián)合身份驗(yàn)證提供了一個(gè)基于標(biāo)準(zhǔn)的解決方案,在不同信任域身份的問(wèn)題,并且可以支持單點(diǎn)登錄。它正在成為在所有類(lèi)型的應(yīng)用,特別是云托管的應(yīng)用越來(lái)越普遍,因?yàn)樗С稚?,而不需要直接網(wǎng)絡(luò)連接到身份提供單點(diǎn)登錄。用戶(hù)不必輸入憑據(jù)為每一種應(yīng)用。這增加了安全性,因?yàn)樗柚沽嗽L(fǎng)問(wèn)許多不同的應(yīng)用程序所需的憑據(jù)的擴(kuò)散,同時(shí)也隱藏了用戶(hù)的憑據(jù)所有,但原來(lái)的身份提供者。應(yīng)用程序只看到包含的令牌中的身份驗(yàn)證信息。

聯(lián)合身份也具有重大的優(yōu)點(diǎn),即人的身份和憑證管理是身份提供者的責(zé)任。應(yīng)用程序或服務(wù)并不需要提供身份管理功能。另外,在企業(yè)環(huán)境中,企業(yè)目錄不需要知道關(guān)于用戶(hù)(提供它信任的身份提供者),它去除了管理該目錄中的用戶(hù)身份的所有的管理開(kāi)銷(xiāo)。

問(wèn)題和注意事項(xiàng)

設(shè)計(jì)實(shí)現(xiàn)聯(lián)合身份驗(yàn)證的應(yīng)用程序時(shí)考慮以下因素:

  • 身份驗(yàn)證可以是一個(gè)單點(diǎn)故障。如果您將應(yīng)用程序部署到多個(gè)數(shù)據(jù)中心,考慮部署身份管理機(jī)制,以相同的數(shù)據(jù)中心,以保持應(yīng)用程序的可靠性和可用性。
  • 身份驗(yàn)證機(jī)制,可以提供工具來(lái)配置基于包含在認(rèn)證令牌的作用索賠的訪(fǎng)問(wèn)控制。這通常被稱(chēng)為基于角色的訪(fǎng)問(wèn)控制(RBAC),并且它可以允許控制權(quán)訪(fǎng)問(wèn)的功能和資源的更精細(xì)的水平。
  • 與企業(yè)目錄,利用社會(huì)身份提供者通常不提供有關(guān)身份驗(yàn)證的用戶(hù)以外的電子郵件地址,也許名稱(chēng)的信息基于聲明的身份。一些社會(huì)身份提供者,如 Microsoft 帳戶(hù),只提供一個(gè)唯一的標(biāo)識(shí)符。應(yīng)用程序通常將需要保持對(duì)注冊(cè)用戶(hù)的一些信息,并且能夠匹配該信息,包含在令牌中的權(quán)利要求書(shū)的標(biāo)識(shí)符。典型地,這是通過(guò)一個(gè)注冊(cè)過(guò)程完成的用戶(hù)第一次訪(fǎng)問(wèn)該應(yīng)用程序時(shí),信息然后被注入到令牌作為每個(gè)認(rèn)證后附加的權(quán)利要求。
  • 如果配置為 STS 多個(gè)身份提供者,它必須檢測(cè)其身份提供者,用戶(hù)應(yīng)該被重定向到身份驗(yàn)證。這個(gè)過(guò)程被稱(chēng)為主領(lǐng)域發(fā)現(xiàn)。在 STS 可能能夠基于電子郵件地址或用戶(hù)名,該用戶(hù)提供,該用戶(hù)被訪(fǎng)問(wèn)時(shí),用戶(hù)的 IP 地址范圍,該應(yīng)用程序的一個(gè)子域,或上的 cookie 中存儲(chǔ)的用戶(hù)的內(nèi)容自動(dòng)地執(zhí)行此瀏覽器。例如,如果用戶(hù)在微軟域,如user@live.com 輸入一個(gè)電子郵件地址,在 STS 將用戶(hù)重定向到 Microsoft 帳戶(hù)登錄頁(yè)面。在隨后的訪(fǎng)問(wèn)中,STS可以使用 cookie 來(lái)表示最后登錄用的 Microsoft 帳戶(hù)。如果自動(dòng)發(fā)現(xiàn)無(wú)法確定主領(lǐng)域時(shí),STS 將顯示一個(gè)家庭領(lǐng)域發(fā)現(xiàn)(HRD)頁(yè),其中列出了受信任的身份提供者,用戶(hù)必須選擇他們想要使用的人。 何時(shí)使用這個(gè)模式

此模式是非常適合的范圍內(nèi)的情況下,如:

  • 在企業(yè)單點(diǎn)登錄。在這種情況下,您需要驗(yàn)證員工被托管在云中的企業(yè)安全邊界以外的企業(yè)應(yīng)用程序,而不需要他們每次訪(fǎng)問(wèn)應(yīng)用程序時(shí)簽署。用戶(hù)體驗(yàn)是一樣的使用本地應(yīng)用程序,他們簽約到公司網(wǎng)絡(luò)時(shí),最初通過(guò)身份驗(yàn)證的時(shí)候,并從此獲得所有相關(guān)的應(yīng)用程序,而無(wú)需再次登錄。
  • 與多個(gè)合作伙伴聯(lián)合身份。在這種情況下,您需要驗(yàn)證這兩個(gè)企業(yè)的員工和業(yè)務(wù)合作伙伴誰(shuí)沒(méi)有在公司目錄帳戶(hù)。這是企業(yè)對(duì)企業(yè)(B2B)的應(yīng)用程序,集成與第三方服務(wù),并在那里與不同的IT系統(tǒng)公司合并或共享資源的應(yīng)用普遍。
  • 在SaaS應(yīng)用聯(lián)合身份。在這種情況下獨(dú)立軟件供應(yīng)商(ISV)提供了一個(gè)即用型服務(wù),為多個(gè)客戶(hù)或租戶(hù)。每個(gè)租戶(hù)將要使用適當(dāng)?shù)纳矸萏峁┱哌M(jìn)行身份驗(yàn)證。例如,企業(yè)用戶(hù)會(huì)希望我們自己的企業(yè)資格證書(shū),而租戶(hù)的消費(fèi)者和客戶(hù)可能希望使用自己的社會(huì)身份憑證。

這種模式可能不適合于下列情況:

  • 應(yīng)用程序的所有用戶(hù)都可以通過(guò)一個(gè)標(biāo)識(shí)提供者進(jìn)行身份驗(yàn)證,并沒(méi)有要求使用任何其他身份提供者進(jìn)行身份驗(yàn)證。這是典型的只使用企業(yè)目錄進(jìn)行身份驗(yàn)證業(yè)務(wù)應(yīng)用,并獲得該目錄可在應(yīng)用程序中直接使用VPN,或(在云中托管的情況下),通過(guò)導(dǎo)通之間的虛擬網(wǎng)絡(luò)連接本地目錄和應(yīng)用程序。
  • 應(yīng)用程序最初建使用不同的認(rèn)證機(jī)制,或許與自定義用戶(hù)存儲(chǔ),或者不具有處理所用的權(quán)利要求為基礎(chǔ)的技術(shù)的協(xié)商標(biāo)準(zhǔn)的能力。改造基于聲明的身份驗(yàn)證和訪(fǎng)問(wèn)控制到現(xiàn)有的應(yīng)用程序可能很復(fù)雜,可能不符合成本效益。

例子

組織舉辦了多租戶(hù)軟件即在 Azure 中的服務(wù)(SaaS)應(yīng)用程序。該應(yīng)用程序 incudes 一個(gè)網(wǎng)站,租戶(hù)可以用它來(lái)管理應(yīng)用程序?yàn)樽约旱挠脩?hù)。該應(yīng)用程序允許租戶(hù)使用由活動(dòng)目錄聯(lián)合服務(wù)(ADFS)產(chǎn)生的,當(dāng)用戶(hù)通過(guò)該組織自己的 Active Directory 身份驗(yàn)證的聯(lián)合身份訪(fǎng)問(wèn)租戶(hù)的網(wǎng)站。圖2示出了該過(guò)程的概述。

圖2 - 用戶(hù)如何在大型企業(yè)用戶(hù)訪(fǎng)問(wèn)應(yīng)用程序

在圖 2 所示的場(chǎng)景中,商戶(hù)驗(yàn)證自己的身份提供者(步驟1),在這種情況下 ADFS。在成功驗(yàn)證租客,ADFS 發(fā)出的令牌??蛻?hù)端瀏覽器轉(zhuǎn)發(fā)此令牌至 SaaS 應(yīng)用的聯(lián)合提供者,其信任的租戶(hù)的 ADFS 發(fā)出令牌,以便取回的令牌是有效的 SaaS 的聯(lián)合提供者(步驟 2)。如果有必要,在 SaaS 聯(lián)合會(huì)提供商上執(zhí)行令牌中的權(quán)利要求書(shū)的權(quán)利要求到該應(yīng)用程序識(shí)別的新令牌返回給客戶(hù)機(jī)瀏覽器之前(步驟3)的變換。應(yīng)用程序信任的 SaaS 的聯(lián)合提供者發(fā)出的令牌,并使用在令牌中的權(quán)利要求書(shū)申請(qǐng)授權(quán)規(guī)則(步驟 4)。

租戶(hù)將不再需要記住不同的憑據(jù)來(lái)訪(fǎng)問(wèn)應(yīng)用程序,以及管理員租戶(hù)的公司將能夠在自己的 ADFS 配置可以訪(fǎng)問(wèn)應(yīng)用程序的用戶(hù)的列表。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)