SAML 2.0
安全斷言標記語言 2.0 (SAML 2.0) 作為 SAML 的最新標準, 用來在安全域中交換身份驗證(Authentication)數據和 授權(Authorization)數據。SAML 2.0基於XML協議,使用包含斷言(Assertions)的安全令牌在SAML授權方(即身份提供者,Identity_provider,縮寫為IdP)和SAML消費方(即服務提供者,Service Provider,縮寫為SP)之間傳遞委託人(通常是一個終端用戶)的信息。SAML 2.0 可以實現基於網絡跨域的單點登錄(SSO), 以便於減少向一個用戶分發多個身份驗證令牌的管理開銷。
SAML 2.0在2005年三月正式代替SAML 1.1成為OASIS標準。SAML 2.0的關鍵特徵在官方文檔SAMLCore[1], SAMLBind[2],SAMLProf[3]和SAMLMeta[4]中有詳細地記載。
來自超過24個公司及團體的大約30人參與了SAML 2.0的創建。尤其是,自由聯盟將身份聯合框架規範(ID-FF)貢獻給OASIS,後者成為了SAML 2.0規範的基礎。 因此,SAML 2.0實際上是SAML 1.1, Liberty ID-FF 1.2(頁面存檔備份,存於網際網路檔案館)和Shibboleth 1.3三種協議的融合。
SAML 2.0斷言
[編輯]斷言是一個包含了由SAML授權方提供的0到多個聲明(statement)的信息包。SAML斷言通常圍繞一個主題生成。該主題使用<Subject>
聲明。SAML 2.0規範定義了三種斷言聲明並且每一種都和一個主題相關。詳細信息如下:
- 身份驗證(Authentication)斷言:該斷言的主題是在某個時間通過某種方式被認證。
- 屬性(Attribute)斷言:該斷言的主題和某種屬性相關聯。
- 授權決策(Authorization Decision)斷言:該斷言的主題被允許或者被禁止訪問某個資源。
一種非常重要的SAML斷言類型叫做「Bearer Assertion」。它主要是用來實現Web瀏覽器的單點登錄。下面是一個短期Bearer斷言的例子。一個IdP(https://idp.example.org/SAML2)發布了一個短期Bearer斷言到一個SP(https://sp.example.com/SAML2)。該斷言包括一個身份驗證斷言<saml:AuthnStatement>
和一個屬性斷言<saml:AttributeStatement>
。SP將使用該屬性斷言實現訪問控制。前綴saml:
代表SAML 2.0斷言的命名空間。
SAML斷言舉例
[編輯]<saml:Assertion
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ID="b07b804c-7c29-ea16-7300-4f3d6f7928ac"
Version="2.0"
IssueInstant="2004-12-05T09:22:05Z">
<saml:Issuer>https://idp.example.org/SAML2</saml:Issuer>
<ds:Signature
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
<saml:Subject>
<saml:NameID
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">
3f7b3dcf-1674-4ecd-92c8-1544f346baf8
</saml:NameID>
<saml:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData
InResponseTo="aaf23196-1773-2113-474a-fe114412ab72"
Recipient="https://sp.example.com/SAML2/SSO/POST"
NotOnOrAfter="2004-12-05T09:27:05Z"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions
NotBefore="2004-12-05T09:17:05Z"
NotOnOrAfter="2004-12-05T09:27:05Z">
<saml:AudienceRestriction>
<saml:Audience>https://sp.example.com/SAML2</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement
AuthnInstant="2004-12-05T09:22:00Z"
SessionIndex="b07b804c-7c29-ea16-7300-4f3d6f7928ac">
<saml:AuthnContext>
<saml:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute
xmlns:x500="urn:oasis:names:tc:SAML:2.0:profiles:attribute:X500"
x500:Encoding="LDAP"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1"
FriendlyName="eduPersonAffiliation">
<saml:AttributeValue
xsi:type="xs:string">member</saml:AttributeValue>
<saml:AttributeValue
xsi:type="xs:string">staff</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
參考文獻
[編輯]一手來源:
- ^ S. Cantor et al. Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite. Working Draft 07, 8 September 2015. Document ID sstc-saml-core-errata-2.0-wd-07 http://www.oasis-open.org/committees/download.php/56776/sstc-saml-core-errata-2.0-wd-07.pdf
- ^ S. Cantor et al. Bindings for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite. Working Draft 06, 8 September 2015. Document ID sstc-saml-bindings-errata-2.0-wd-06 https://www.oasis-open.org/committees/download.php/56779/sstc-saml-bindings-errata-2.0-wd-06.pdf
- ^ J. Hughes et al. Profiles for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite. Working Draft 07, 8 September 2015. Document ID sstc-saml-profiles-errata-2.0-wd-07 https://www.oasis-open.org/committees/download.php/56782/sstc-saml-profiles-errata-2.0-wd-07.pdf
- ^ S. Cantor et al. Metadata for the OASIS Security Assertion Markup Language (SAML) V2.0 – Errata Composite. Working Draft 05, 8 September 2015. Document ID sstc-saml-metadata-errata-2.0-wd-05 https://www.oasis-open.org/committees/download.php/56785/sstc-saml-metadata-errata-2.0-wd-05.pdf