隨著互聯(lián)網(wǎng)的普及,物聯(lián)網(wǎng)的逼近,,數(shù)字化時(shí)代的真正到來,,身份認(rèn)證與訪問授權(quán)的重要性越來越凸顯。SAML(安全聲明標(biāo)記語言)標(biāo)準(zhǔn)定義了供應(yīng)商提供身份驗(yàn)證與授權(quán)服務(wù)的方式,。那么關(guān)于SAML,,我們需要知道些什么呢? 首先,,SAML是可在網(wǎng)絡(luò)中多臺計(jì)算機(jī)上共享安全憑證的一個(gè)開放標(biāo)準(zhǔn),。該標(biāo)準(zhǔn)描述了一個(gè)框架,可使1臺計(jì)算機(jī)代表其他多臺計(jì)算機(jī)執(zhí)行某些安全功能,。
嚴(yán)格來講,,SAML是指用于編碼所有這些信息的XML變體語言,但該術(shù)語也涵蓋了組成該標(biāo)準(zhǔn)的各種協(xié)議消息和資料,。 SAML 2.0在2005年引入,,仍是該標(biāo)準(zhǔn)的當(dāng)前版本。之前的1.1版如今已基本棄用,。 SAML是實(shí)現(xiàn)單點(diǎn)登錄(SSO)的一種方法,,且SSO也確實(shí)是SAML最常見的用例。我們可以從SSO開始討論SAML的用途,,然后深入SAML的組件和操作,。 SSO是什么?它能干什么? 單點(diǎn)登錄(SSO),,可使用戶提供一次安全憑證(比如用戶名/口令對),,就能以之訪問多個(gè)系統(tǒng)、平臺,、App或其他資源,。該方法能將用戶從記憶多組登錄名及口令的負(fù)擔(dān)中解脫出來,也可令I(lǐng)T團(tuán)隊(duì)不用再將多個(gè)服務(wù)整合到一臺服務(wù)器上,,真是讓事情簡單不少,。 比如說,公司可用SSO讓用戶既能登錄內(nèi)部服務(wù)器上運(yùn)行的專用Web應(yīng)用,,也能登錄托管在SaaS上的ERP(企業(yè)資源計(jì)劃)系統(tǒng),。 想要發(fā)揮SSO的功用,用戶必須要能經(jīng)過身份驗(yàn)證就收到授權(quán),?;谄浔蛔C實(shí)的身份,訪問其他多臺計(jì)算機(jī),。或者以另一種方式:1臺計(jì)算機(jī)向在其他多臺計(jì)算機(jī)上被授權(quán)的用戶提供服務(wù),。SAML標(biāo)準(zhǔn)定義了所有這些計(jì)算機(jī)之間相互安全通信的方式。 SAML提供者是什么,? SAML術(shù)語中,,提供者是系統(tǒng)中的一個(gè)實(shí)體,通常來講就是一臺服務(wù)器或其他計(jì)算機(jī),,幫助用戶訪問所需的服務(wù),。提供或消費(fèi)SAML服務(wù)的系統(tǒng),一般被稱為服務(wù)提供者,;最重要的一種服務(wù)提供者,,就是身份提供者。 身份提供者是什么,? 身份提供者是系統(tǒng)中的一個(gè)實(shí)體,,用于確保用戶真的是其所聲稱的身份——提供身份驗(yàn)證。身份提供者還負(fù)責(zé)確認(rèn)系統(tǒng)中各實(shí)體上哪些服務(wù)可以被該用戶訪問,??砂碨AML標(biāo)準(zhǔn)提供身份驗(yàn)證服務(wù)的實(shí)現(xiàn)有很多種,比如Salesforce就能充當(dāng)身份提供者和這一角色,,LDAP,、RADIUS或活動目錄(AD)也可以。 SAML聲明是什么,? SAML聲明就是一份XML文檔,,所有我們討論的信息都通過它在計(jì)算機(jī)間傳遞,。一旦身份提供者確認(rèn)你確實(shí)是所聲稱的用戶,,且有權(quán)訪問你感興趣的內(nèi)容或服務(wù),,它就會向?qū)嶋H提供這些服務(wù)的服務(wù)器發(fā)出SAML聲明。出于安全考慮,,SAML聲明可被加密,。 SAML身份驗(yàn)證如何進(jìn)行? 這看起來可能有點(diǎn)抽象,,不妨看看下面這張SAML身份驗(yàn)證事務(wù)處理的高級視圖,。大多數(shù)情況下用戶代理都是Web瀏覽器。 假設(shè)你是SSO環(huán)境中的用戶,,你正試圖訪問服務(wù)器上的某資源,。所涉及的一系列事件如下: 1. 你試圖訪問服務(wù)器上的資源,也就是SAML術(shù)語中的服務(wù)提供者,。該服務(wù)提供者查驗(yàn)?zāi)闶欠袷窍到y(tǒng)中經(jīng)驗(yàn)證過的用戶,。如果你是,直接跳轉(zhuǎn)到步驟7,;如果你不是,,服務(wù)提供者開始身份驗(yàn)證過程。 2. 服務(wù)提供者為你確定恰當(dāng)?shù)纳矸萏峁┱?,并將你重定向到該提供者——也就是SSO服務(wù),。 3. 你的瀏覽器向SSO服務(wù)發(fā)送身份驗(yàn)證請求;該服務(wù)對你進(jìn)行識別,。 4. SSO服務(wù)返回一個(gè)XHTML文檔,,在SAMLResponse參數(shù)中包含有服務(wù)提供者所需的身份驗(yàn)證信息。 5. SAMLResponse參數(shù)被傳遞給服務(wù)提供者,。 6. 服務(wù)提供者處理該響應(yīng),,并為你創(chuàng)建安全上下文——基本上,就是讓你登錄進(jìn)去,,然后告訴你你請求的資源在哪里,。 7. 有了該信息,你就可以再次請求你感興趣的資源了,。 8. 該資源最終被返回給你,! 你會注意到,該過程中很多步驟很抽象,。比如說,,SAML是怎么知道恰當(dāng)?shù)纳矸萏峁┱叩模蛘呱矸萏峁┱呤侨绾未_定你就是你所聲稱的用戶的,,這些都沒有任何解釋,。這不是什么疏漏:SAML標(biāo)準(zhǔn)并沒有定義確切的實(shí)現(xiàn)方法,給IT留有很多余地。 正如前文所述,,有很多技術(shù)可供實(shí)際身份驗(yàn)證過程所用,;無論你選擇的是Salesforce、LDAP還是別的什么,,SAML聲明都會將你經(jīng)過驗(yàn)證的信息在提供者間流轉(zhuǎn),。 如果你想了解更多有關(guān)SAML事務(wù)中消息傳遞的細(xì)節(jié),你可以深入研究完整XML代碼,,了解上述場景中從身份提供者傳遞給服務(wù)提供者的各種聲明,。 SAML vs. OAuth:其間區(qū)別是什么? OAuth(https:///)是比SAML略新的標(biāo)準(zhǔn),,由谷歌和推特在2006年聯(lián)合開發(fā),。該標(biāo)準(zhǔn)被開發(fā)的部分原因,是為了補(bǔ)充SAML在移動平臺上的不足,,且不是基于XML,,而是基于JSON。 除了SAML不那么吸引人的移動支持,,這二者之間的區(qū)別在哪里呢,?如我們所見,SAML標(biāo)準(zhǔn)定義了提供者提供身份驗(yàn)證和授權(quán)服務(wù)的方式,。OAuth則不然,,僅處理授權(quán)。 OpenID Connect(http:///connect/)是更新的標(biāo)準(zhǔn),,于2014年開發(fā),,提供身份驗(yàn)證服務(wù),處于OAuth上層,。 另一個(gè)主要的不同,,就是其用例。SAML理論上用于開放互聯(lián)網(wǎng),,實(shí)際上最常部署在企業(yè)內(nèi)網(wǎng),,出于單點(diǎn)登錄目的。相比之下,,OAuth則是谷歌和推特為了整個(gè)互聯(lián)網(wǎng)而設(shè)計(jì)的,。 |
|