信任不可移植的問題
您經(jīng)常會遇到需要提供個(gè)人信息的 Web 站點(diǎn),原因基本上是驗(yàn)證或者通過個(gè)人首選項(xiàng)定制站點(diǎn)。最終,您會發(fā)現(xiàn)在許多不同的地方有多個(gè)帳戶。如果每個(gè)站點(diǎn)都為此設(shè)立自己的用戶資料庫,結(jié)果就會造成:
對所有這些單獨(dú)的站點(diǎn)都要考慮您的信息的安全。
多個(gè)站點(diǎn)不能協(xié)同為您提供所感興趣的更精細(xì)的服務(wù)。
為了進(jìn)一步說明上述第二點(diǎn),我提供一個(gè)很典型的例子:旅游預(yù)約。其中包括機(jī)票、旅館和出租車的預(yù)定。您可能希望向某家航空公司、某個(gè)旅館以及某個(gè)汽車出租商預(yù)訂,但是不存在一種機(jī)制使您能夠在三個(gè)獨(dú)立的站點(diǎn)之間無縫移植——可能需要提交證明進(jìn)行三次驗(yàn)證(假設(shè)這三家您都有帳戶)。
SAML 被設(shè)計(jì)成解決這一問題,它允許只有少數(shù)經(jīng)過選擇的團(tuán)體保留您的信息,并且如果需要,在得到您的明確批準(zhǔn)之后這些團(tuán)體可以與其他有關(guān)的團(tuán)體共享這些信息。這意味著,您的信息安全的掌握在您所信任的團(tuán)體手中,并且可以訪問一些供應(yīng)商通過組織多種低層次服務(wù)所提供的高級服務(wù)。
本文將說明 SAML 如何實(shí)現(xiàn)這一目標(biāo)。
通行證適用于什么地方?
Microsoft Passport 試圖通過一種非常簡單的、集中的方式解決這一問題。Microsoft 通行證服務(wù)包括一個(gè)大型的中心資料庫,存儲所有主體及其屬性。使用這個(gè)中心資料庫中的信息,各個(gè)參與的站點(diǎn)可以允許主體訪問信息或者授權(quán)執(zhí)行特定的動作。的問題是——可能很多組織都有同感——他們失去了對主體數(shù)據(jù)的所有權(quán)。SAML 通過聯(lián)合識別、驗(yàn)證和授權(quán)的形式克服了這一問題。驗(yàn)證和授權(quán)的聯(lián)合制允許企業(yè)建立自己所有和控制的數(shù)據(jù),并能夠以結(jié)構(gòu)化的、受控的方式與協(xié)作企業(yè)共享這些數(shù)據(jù)。
SAML 的目標(biāo)
SAML 的主要目標(biāo)包括:
建立一種獨(dú)立于協(xié)議和平臺的驗(yàn)證和授權(quán)交換機(jī)制(也稱為單點(diǎn)登錄,或者SSO)。
應(yīng)該獨(dú)立部署環(huán)境,能夠用于集中式的、分散式的以及聯(lián)合式的部署場景。
SAML 框架應(yīng)該是基于 XML 的。
SAML 的體系結(jié)構(gòu)
SAML 是一種控制對已驗(yàn)證主體的資源進(jìn)行訪問的機(jī)制。對資源的訪問基于特定的策略管理。這種機(jī)制需要兩種關(guān)鍵性的活動:
基于策略的訪問控制決策。
強(qiáng)制實(shí)施這些決策。
SAML 提供了兩種角色處理這些活動:策略決策點(diǎn)(Policy Decision Points,PDPs)和策略實(shí)施點(diǎn)(Policy Enforcement Points,PEPs)。
場景:主體希望從目標(biāo) Web 站點(diǎn)訪問一些受保護(hù)的內(nèi)容。主體前往能夠識別或者已經(jīng)驗(yàn)證該主體的源 Web 站點(diǎn)。用戶從源站點(diǎn)出發(fā)嘗試訪問目標(biāo) Web 站點(diǎn)上的受保護(hù)內(nèi)容,步驟如下:
主體向源站點(diǎn)驗(yàn)證并請求到目標(biāo)站點(diǎn)受保護(hù)資源的鏈接。
源站點(diǎn)使用驗(yàn)證標(biāo)志重定向主體。
主體使用該標(biāo)志向目標(biāo)站點(diǎn)請求受保護(hù)的資源。
目標(biāo)站點(diǎn) PEP 檢查該 PDP 的權(quán)限。
PDP 可能內(nèi)部請求源站點(diǎn)使用該標(biāo)志進(jìn)行 SAML 驗(yàn)證斷言。
源站點(diǎn)根據(jù)標(biāo)志向目標(biāo)站點(diǎn)提供 SAML 驗(yàn)證斷言。
目標(biāo)站點(diǎn)向主體提供受保護(hù)的資源。
總之,在源站點(diǎn)驗(yàn)證的主體從 SAML 權(quán)威獲得一個(gè)標(biāo)志并將其提供給目標(biāo)站點(diǎn)。目標(biāo)站點(diǎn)使用該標(biāo)志從源站點(diǎn)請求所需要的信息而不需要明確地從主體獲取。
SAML 綜述
SAML 規(guī)范由以下部分組成:
斷言與協(xié)議:該規(guī)范處理定義 XML 編碼的斷言的語法和語義,以及請求和響應(yīng)協(xié)議。
綁定與配置文件:該規(guī)范處理 SAML 請求/響應(yīng)消息到底層通信協(xié)議如 SOAP 和 SMTP 的映射??刂圃诘讓油ㄐ艆f(xié)議中嵌入和提取 SAML 信息的一組規(guī)則稱為一個(gè)配置文件。
一致性規(guī)范:不同的 SAML 實(shí)現(xiàn)可能只實(shí)現(xiàn)這些規(guī)范的一部分。一致性規(guī)范設(shè)置了一種基本標(biāo)準(zhǔn),SAML 規(guī)范的實(shí)現(xiàn)在能夠稱為一致性實(shí)現(xiàn)之前必須滿足這一標(biāo)準(zhǔn)。這樣有助于提高互操作性和兼容性。
安全和保密的問題:該規(guī)范涉及 SAML 體系結(jié)構(gòu)中的安全風(fēng)險(xiǎn),具體而言就是 SAML 如何應(yīng)對這些風(fēng)險(xiǎn)以及無法解決的風(fēng)險(xiǎn)。
我將采用問答的形式介紹和 SAML 有關(guān)的概念。我將逐個(gè)回答以下問題以澄清這些基本概念:
什么是 斷言?
誰 生產(chǎn)和消費(fèi)斷言?
如何 請求斷言,如何發(fā)送響應(yīng)?基本上而言,請求和響應(yīng)協(xié)議是什么?
SAML 請求響應(yīng)協(xié)議可以綁定到哪些底層的通信傳輸 協(xié)議?
如何向 SOAP 這樣的底層通信傳輸協(xié)議中 插入 SAML 斷言?
什么是 一致性規(guī)范,為何需要它?
您經(jīng)常會遇到需要提供個(gè)人信息的 Web 站點(diǎn),原因基本上是驗(yàn)證或者通過個(gè)人首選項(xiàng)定制站點(diǎn)。最終,您會發(fā)現(xiàn)在許多不同的地方有多個(gè)帳戶。如果每個(gè)站點(diǎn)都為此設(shè)立自己的用戶資料庫,結(jié)果就會造成:
對所有這些單獨(dú)的站點(diǎn)都要考慮您的信息的安全。
多個(gè)站點(diǎn)不能協(xié)同為您提供所感興趣的更精細(xì)的服務(wù)。
為了進(jìn)一步說明上述第二點(diǎn),我提供一個(gè)很典型的例子:旅游預(yù)約。其中包括機(jī)票、旅館和出租車的預(yù)定。您可能希望向某家航空公司、某個(gè)旅館以及某個(gè)汽車出租商預(yù)訂,但是不存在一種機(jī)制使您能夠在三個(gè)獨(dú)立的站點(diǎn)之間無縫移植——可能需要提交證明進(jìn)行三次驗(yàn)證(假設(shè)這三家您都有帳戶)。
SAML 被設(shè)計(jì)成解決這一問題,它允許只有少數(shù)經(jīng)過選擇的團(tuán)體保留您的信息,并且如果需要,在得到您的明確批準(zhǔn)之后這些團(tuán)體可以與其他有關(guān)的團(tuán)體共享這些信息。這意味著,您的信息安全的掌握在您所信任的團(tuán)體手中,并且可以訪問一些供應(yīng)商通過組織多種低層次服務(wù)所提供的高級服務(wù)。
本文將說明 SAML 如何實(shí)現(xiàn)這一目標(biāo)。
通行證適用于什么地方?
Microsoft Passport 試圖通過一種非常簡單的、集中的方式解決這一問題。Microsoft 通行證服務(wù)包括一個(gè)大型的中心資料庫,存儲所有主體及其屬性。使用這個(gè)中心資料庫中的信息,各個(gè)參與的站點(diǎn)可以允許主體訪問信息或者授權(quán)執(zhí)行特定的動作。的問題是——可能很多組織都有同感——他們失去了對主體數(shù)據(jù)的所有權(quán)。SAML 通過聯(lián)合識別、驗(yàn)證和授權(quán)的形式克服了這一問題。驗(yàn)證和授權(quán)的聯(lián)合制允許企業(yè)建立自己所有和控制的數(shù)據(jù),并能夠以結(jié)構(gòu)化的、受控的方式與協(xié)作企業(yè)共享這些數(shù)據(jù)。
SAML 的目標(biāo)
SAML 的主要目標(biāo)包括:
建立一種獨(dú)立于協(xié)議和平臺的驗(yàn)證和授權(quán)交換機(jī)制(也稱為單點(diǎn)登錄,或者SSO)。
應(yīng)該獨(dú)立部署環(huán)境,能夠用于集中式的、分散式的以及聯(lián)合式的部署場景。
SAML 框架應(yīng)該是基于 XML 的。
SAML 的體系結(jié)構(gòu)
SAML 是一種控制對已驗(yàn)證主體的資源進(jìn)行訪問的機(jī)制。對資源的訪問基于特定的策略管理。這種機(jī)制需要兩種關(guān)鍵性的活動:
基于策略的訪問控制決策。
強(qiáng)制實(shí)施這些決策。
SAML 提供了兩種角色處理這些活動:策略決策點(diǎn)(Policy Decision Points,PDPs)和策略實(shí)施點(diǎn)(Policy Enforcement Points,PEPs)。
場景:主體希望從目標(biāo) Web 站點(diǎn)訪問一些受保護(hù)的內(nèi)容。主體前往能夠識別或者已經(jīng)驗(yàn)證該主體的源 Web 站點(diǎn)。用戶從源站點(diǎn)出發(fā)嘗試訪問目標(biāo) Web 站點(diǎn)上的受保護(hù)內(nèi)容,步驟如下:
主體向源站點(diǎn)驗(yàn)證并請求到目標(biāo)站點(diǎn)受保護(hù)資源的鏈接。
源站點(diǎn)使用驗(yàn)證標(biāo)志重定向主體。
主體使用該標(biāo)志向目標(biāo)站點(diǎn)請求受保護(hù)的資源。
目標(biāo)站點(diǎn) PEP 檢查該 PDP 的權(quán)限。
PDP 可能內(nèi)部請求源站點(diǎn)使用該標(biāo)志進(jìn)行 SAML 驗(yàn)證斷言。
源站點(diǎn)根據(jù)標(biāo)志向目標(biāo)站點(diǎn)提供 SAML 驗(yàn)證斷言。
目標(biāo)站點(diǎn)向主體提供受保護(hù)的資源。
總之,在源站點(diǎn)驗(yàn)證的主體從 SAML 權(quán)威獲得一個(gè)標(biāo)志并將其提供給目標(biāo)站點(diǎn)。目標(biāo)站點(diǎn)使用該標(biāo)志從源站點(diǎn)請求所需要的信息而不需要明確地從主體獲取。
SAML 綜述
SAML 規(guī)范由以下部分組成:
斷言與協(xié)議:該規(guī)范處理定義 XML 編碼的斷言的語法和語義,以及請求和響應(yīng)協(xié)議。
綁定與配置文件:該規(guī)范處理 SAML 請求/響應(yīng)消息到底層通信協(xié)議如 SOAP 和 SMTP 的映射??刂圃诘讓油ㄐ艆f(xié)議中嵌入和提取 SAML 信息的一組規(guī)則稱為一個(gè)配置文件。
一致性規(guī)范:不同的 SAML 實(shí)現(xiàn)可能只實(shí)現(xiàn)這些規(guī)范的一部分。一致性規(guī)范設(shè)置了一種基本標(biāo)準(zhǔn),SAML 規(guī)范的實(shí)現(xiàn)在能夠稱為一致性實(shí)現(xiàn)之前必須滿足這一標(biāo)準(zhǔn)。這樣有助于提高互操作性和兼容性。
安全和保密的問題:該規(guī)范涉及 SAML 體系結(jié)構(gòu)中的安全風(fēng)險(xiǎn),具體而言就是 SAML 如何應(yīng)對這些風(fēng)險(xiǎn)以及無法解決的風(fēng)險(xiǎn)。
我將采用問答的形式介紹和 SAML 有關(guān)的概念。我將逐個(gè)回答以下問題以澄清這些基本概念:
什么是 斷言?
誰 生產(chǎn)和消費(fèi)斷言?
如何 請求斷言,如何發(fā)送響應(yīng)?基本上而言,請求和響應(yīng)協(xié)議是什么?
SAML 請求響應(yīng)協(xié)議可以綁定到哪些底層的通信傳輸 協(xié)議?
如何向 SOAP 這樣的底層通信傳輸協(xié)議中 插入 SAML 斷言?
什么是 一致性規(guī)范,為何需要它?