目錄
1、什么是SAML
2、有哪些應(yīng)用場(chǎng)景
3、SAML身份驗(yàn)證的工作原理
1、什么是SAML?
SAML 的英文全稱是Security Assertion Markup Language(發(fā)音sam-el),即安全斷言標(biāo)記語言。是一種支持單點(diǎn)登錄(SSO)的開放標(biāo)準(zhǔn)。通過僅使用一組登錄憑據(jù)訪問一系列資源,您可以提供對(duì)資源的無縫訪問并消除不安全的密碼擴(kuò)散。
SAML是OASIS安全服務(wù)技術(shù)委員會(huì)的一個(gè)產(chǎn)品,始于2001年SAML1.0,其最近發(fā)布于2005年SMAL2.0
它是一個(gè)基于XML的開源標(biāo)準(zhǔn)數(shù)據(jù)格式,專門支持身份聯(lián)合,使身份提供商(IdP)能夠?qū)⒔?jīng)過身份驗(yàn)證的身份及其他屬性無縫且安全的傳遞給服務(wù)提供商(SP)。
2、有哪些應(yīng)用場(chǎng)景?
- 網(wǎng)頁瀏覽器單點(diǎn)登錄
- 聯(lián)合身份
網(wǎng)頁瀏覽器單點(diǎn)登錄相信大家都很好理解他的流程(Google SSO),那么我就通過一個(gè)生活實(shí)例給講解下什么是聯(lián)合身份的問題吧~
大家都知道歐盟是多個(gè)國(guó)家組合在一起的總稱,聯(lián)合身份就像是歐盟身份證
- Bob 是其中歐盟體中A國(guó)的合法公民,可以在A國(guó)任意出行
- Bob 去歐盟體中B國(guó)出差,到達(dá)目的地后,工作人員需要Bob出示證件證明其身份(-->SP的入口)
- Bob沒有B國(guó)身份證,因?yàn)锽國(guó)也是歐盟一員,于是Bob就去找歐盟頒發(fā)了一個(gè)歐盟身份證 (-->在IdP進(jìn)行身份核驗(yàn))
- Bob將其歐盟身份證交給B國(guó)工作人員,工作人員去“歐盟系統(tǒng)”查詢這個(gè)身份是否合法(-->SP向IdP發(fā)送請(qǐng)求,要求驗(yàn)證信息)
- “歐盟系統(tǒng)”返回Bob是歐盟國(guó)內(nèi)的公民,最終工作人員核驗(yàn)過身份信息后就讓Bob進(jìn)去了(-->IdP回復(fù)SP信息無誤,SP允許該用戶訪問系統(tǒng))
3、SAML身份驗(yàn)證的工作原理
服務(wù)提供商首先要和身份提供商建立信任,通過SAML協(xié)議傳遞認(rèn)證信息
要訪問服務(wù)提供商的用戶必須首先通過IDP進(jìn)行身份驗(yàn)證
一起推演身份驗(yàn)證流程
- IdP 具備用戶及屬性數(shù)據(jù),例如:userName、Email等
- 身份提供商IdP生成用戶的信息,將用戶標(biāo)示符填充到斷言中,并發(fā)送給服務(wù)提供商SP,SP可以驗(yàn)證斷言。但是我們不能僅以明文形式發(fā)送,因?yàn)閿?shù)據(jù)完全不受保護(hù),因此IdP必須首先對(duì)斷言進(jìn)行簽名,這樣SP可以驗(yàn)證斷言的頒發(fā)者,從而得到信任
- SP讀取用戶標(biāo)示符,嘗試將其映射到其應(yīng)用下的用戶。在這種情況下,有可能由于未找到用戶屬性而失敗,因此為了使聯(lián)邦工作,我們需要建立一些整合規(guī)則,例如SP可能會(huì)指示用戶標(biāo)示符號(hào)的格式必須為Email,IdP為與其匹配必須同意并配置
- 當(dāng)雙方具有相同的配置時(shí),SAML斷言就映射到服務(wù)提供商SP的用戶對(duì)象,從而服務(wù)
因此提供者可以允許訪問配置和集成規(guī)則對(duì)成功建立這些配置的SAML聯(lián)合至關(guān)重要
配置和系統(tǒng)證書可以手動(dòng)輸入到SP/IdP中,但是通常你會(huì)收集需求和功能到XML元數(shù)據(jù)文件中,通過交換這些文件,配置聯(lián)邦
元數(shù)據(jù)交換是建立在信任含有用戶標(biāo)示符格式的元數(shù)據(jù)文件
元數(shù)據(jù)需要遵循名稱、ID、格式的標(biāo)準(zhǔn)
元數(shù)據(jù)通常包含:
- 發(fā)件人的證書(作用:接收人可以使用證書驗(yàn)證斷言的簽名,并知道它來自受信任的一方)
- 實(shí)體標(biāo)示符號(hào)(唯一的標(biāo)示發(fā)送者/接收者)
- 關(guān)于SP和IdP之間交換消息的協(xié)議
參考SMAL2.0技術(shù)視頻