安全斷言標記語言

安全斷言標記語言(SAML,Security Assertion Markup Language)是一種可擴展標識語言(XML)標準,它允許用戶登錄一次相關但單獨的網站。

簡介

安全斷言標記語言(英語: 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沒有規定身份提供者的身份驗證方法;他們大多使用用戶名和密碼,但也有其他驗證方式,包括採用多重要素驗證。諸如輕型目錄訪問協定、RADIUS和Active Directory等目錄服務允許用戶使用一組用戶名和密碼登錄,這是身份提供者使用身份驗證令牌的一個典型來源。許多流行的網際網路社交網路服務也提供身份驗證服務,理論上他們也可以支持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

5.SAML 1.1和SAML 2.0都為身份驗證和訊息完整性使用基於XML Signature標準的數字簽名。

6.XML Encryption

7.SAML 2.0使用XML Encryption為加密名稱標識符、加密屬性和加密斷言提供元素(SAML 1.1沒有加密功能)。但XML加密據報有著嚴重的安全問題。

8.Hypertext Transfer Protocol (HTTP)

SAML很大程度上依賴超文本傳輸協定作為其通信協定:

1.SOAP

2.SAML指定使用SOAP,尤其是SOAP 1.1。

SAML定義了基於XML的斷言、協定、綁定和配置。術語SAML核心(SAML Core)指SAML斷言的一般語法和語義,以及用於請求和在系統實體間傳輸這些斷言的協定。SAML協定指 來傳輸,而不是 如何傳輸(後者由所選擇的綁定決定)。因此SAML核心只定義了“純粹的”SAML斷言,以及SAML的請求和回響元素。

SAML綁定決定SAML請求和回響如何映射到標準的訊息或通信協定。一個重要的、同步的綁定是SAML SOAP綁定。

SAML配置是使用特定斷言、協定和綁定組成的適用於所定義使用情況的一個具體表現形式。

相關詞條

熱門詞條

聯絡我們