簡介
安全斷言標記語言(英語:
Security Assertion Markup Language,簡稱
SAML,發音
sam-el)是一個基於
XML的開源標準數據格式,它在當事方之間交換
身份驗證和
授權數據,尤其是在身份提供者和
服務提供者之間交換。SAML是
OASIS安全服務技術委員會的一個產品,始於2001年。其最近的主要更新發布於2005年,但協定的增強仍在通過附加的可選標準穩步增加。
SAML解決的最重要的需求是
網頁瀏覽器單點登錄(SSO)。單點登錄在
內部網層面比較常見,(例如使用
Cookie),但將其擴展到內部網之外則一直存在問題,並使得不可互操作的專有技術激增。(另一種近日解決瀏覽器單點登錄問題的方法是OpenID Connect協定)
SAML定義三種元件:斷言、協定以及約束。存在驗證、標誌、授權三種斷言。驗證斷言確認用戶的身份,標誌斷言包含特定的用戶信息,授權斷言確認用戶得到授權。
協定定義SAML如何請求和接收斷言。約束定義如何將SAML訊息交換映射成簡單對象訪問協定(SOAP)交換。SAML與多個協定一起工作,包括超文本傳輸協定(HTTP)、簡單郵件傳輸協定(SMTP)、檔案傳輸協定(FTP),它還支持SOAP、BizTalk以及電子商務XML(ebXML)。結構化信息標準促進組織(OASIS)是SAML的標準組織。
歷史
OASIS安全服務技術委員會(SSTC)於2001年1月首次舉行會議,提出“定義一個用於交換身份驗證和授權的XML框架。”為完成此目標,下列智慧財產權在該年的頭兩個月內向SSTC進行了捐獻:
Security Services Markup Language(S2ML),來自Netegrity
AuthXML,來自Securant
XML Trust Assertion Service Specification(X-TASS),來自VeriSign
Information Technology Markup Language(ITML),來自Jamcracker
在這項工作的基礎上,OASIS於2002年11月宣布“安全斷言標記語言”(SAML)V1.0規範成為一個OASIS標準。
與此同時,大型企業、非營利及政府組織的聯盟Liberty Alliance提出了一個擴展SAML標準的“自由聯盟統一聯合框架”(ID-FF)。與其前身SAML類似,Liberty ID-FF提出了一個標準化、跨域、基於Web的單點登錄框架。此外,Liberty描繪了一個“信任圈”(circle of trust),其中每個參與域被信任將準確記錄識別用戶的過程、所使用的身份驗證類型,以及任何與生成身份驗證憑據相關的策略。信任圈中的其他成員可以查驗這些策略,以決定是否信任此類信息。
雖然ID-FF開發了Liberty,SSTC已開始小規模升級到SAML規範。這使得SSTC在2003年9月批准了SAML V1.1規範。在同月,Liberty將ID-FF貢獻至OASIS,從而為SAML下一版本奠基。2005年3月,SAML V2.0被宣布成為一項OASIS標準。SAML V2.0意味著Liberty ID-FF及其他專有擴展的收斂,以及包括SAML本身的早期版本。大多數SAML實現支持V2.0,並也大多支持V1.1以實現向後兼容。截至2008年1月,SAML V2.0的開發已在政府、高等教育和全球商業企業中普遍存在。
原則
SAML規範定義了三個角色:委託人(通常為一名用戶)、身份提供者(IdP),服務提供者(SP)。在用SAML解決的使用案例中,委託人從服務提供者那裡請求一項服務。服務提供者請求身份提供者並從那裡並獲得一個身份斷言。服務提供者可以基於這一斷言進行
訪問控制的判斷——即決定委託人是否有權執行某些服務。
在將身份斷言傳送給服務提供者之前,身份提供者也可能向委託人要求一些信息——例如用戶名和密碼,以驗證委託人的身份。SAML規範了三方之間的斷言,尤其是斷言身份訊息是由身份提供者傳遞給服務提供者。在SAML中,一個身份提供者可能提供SAML斷言給許多服務提供者。同樣的,一個服務提供者可以依賴並信任許多獨立的身份提供者的斷言。
版本
SAML自V1.0以來已進行一次重大及一次次要修訂。
SAML 1.0於2002年11月獲準成為OASIS標準
SAML 1.1於2003年9月獲準為OASIS標準
SAML 2.0於2005年3月成為OASIS標準
Liberty Alliance在2003年9月將其自由聯盟統一聯合框架(ID-FF)貢獻至OASIS SSTC:
ID-FF 1.1於2003年4月發布
ID-FF 1.2於2003年11月完成
SAML的1.0和1.1版本很類似,僅存在微小差異。
SAML 2.0與SAML 1.1則有著實質性的差異。雖然兩者都是解決相同的使用案例,但SAML 2.0與1.1並不兼容。
儘管ID-FF 1.2已作為SAML 2.0的基礎貢獻至OASIS,但在SAML 2.0與ID-FF 1.2之間有著一些重要的差異。尤其是儘管這兩個規範同根同源,但兩者並不兼容。
設計
SAML 創建在一些現有標準之上:
1.Extensible Markup Language (XML)
2.大多數SAML交換是以一個標準化的
XML方言表示,這也是SAML的名稱(Security Assertion Markup Language)的根源。
3.XML Schema (XSD): SAML斷言和協定部分採用XML Schema。
4.XML Signature
6.XML Encryption
7.SAML 2.0使用
XML Encryption為加密名稱標識符、加密屬性和加密斷言提供元素(SAML 1.1沒有加密功能)。但XML加密據報有著嚴重的安全問題。
8.Hypertext Transfer Protocol (HTTP)
1.SOAP
2.SAML指定使用
SOAP,尤其是SOAP 1.1。
SAML定義了基於XML的斷言、協定、綁定和配置。術語SAML核心(SAML Core)指SAML斷言的一般語法和語義,以及用於請求和在系統實體間傳輸這些斷言的協定。SAML協定指誰來傳輸,而不是如何傳輸(後者由所選擇的綁定決定)。因此SAML核心只定義了“純粹的”SAML斷言,以及SAML的請求和回響元素。
SAML綁定決定SAML請求和回響如何映射到標準的訊息或通信協定。一個重要的、同步的綁定是SAML SOAP綁定。
SAML配置是使用特定斷言、協定和綁定組成的適用於所定義使用情況的一個具體表現形式。