複製鏈接
請複製以下鏈接發送給好友

SAML

鎖定
安全斷言標記語言(英語:Security Assertion Markup Language,簡稱SAML,發音sam-el)是一個基於XML的開源標準數據格式,它在當事方之間交換身份驗證授權數據,尤其是在身份提供者和服務提供者之間交換。SAML是OASIS安全服務技術委員會的一個產品,始於2001年。其主要更新發佈於2005年,但協議的增強仍在通過附加的可選標準穩步增加。
SAML解決的最重要的需求是網頁瀏覽器單點登錄(SSO)。單點登錄在內部網層面比較常見,(例如使用Cookie),但將其擴展到內部網之外則一直存在問題,並使得不可互操作的專有技術激增。(另一種解決瀏覽器單點登錄問題的方法是OpenID Connect協議)
中文名
SAML
外文名
Security Assertion Markup Language
釋    義
安全聲明標記語言
作    用
表明用户是否已經認證

目錄

SAML簡介

安全斷言標記語言(英語:Security Assertion Markup Language,簡稱SAML,發音sam-el)是一個基於XML的開源標準數據格式,它在當事方之間交換身份驗證授權數據,尤其是在身份提供者和服務提供者之間交換。SAML是OASIS安全服務技術委員會的一個產品,始於2001年。其最近的主要更新發佈於2005年,但協議的增強仍在通過附加的可選標準穩步增加。
SAML解決的最重要的需求是網頁瀏覽器單點登錄(SSO)。單點登錄在內部網層面比較常見,(例如使用Cookie),但將其擴展到內部網之外則一直存在問題,並使得不可互操作的專有技術激增。(另一種近日解決瀏覽器單點登錄問題的方法是OpenID Connect協議)

SAML原則

SAML規範定義了三個角色:委託人(通常為一名用户)、身份提供者(IdP),服務提供者(SP)。在用SAML解決的使用案例中,委託人從服務提供者那裏請求一項服務。服務提供者請求身份提供者並從那裏並獲得一個身份斷言。服務提供者可以基於這一斷言進行訪問控制的判斷——即決定委託人是否有權執行某些服務。
在將身份斷言發送給服務提供者之前,身份提供者也可能向委託人要求一些信息——例如用户名和密碼,以驗證委託人的身份。SAML規範了三方之間的斷言,尤其是斷言身份消息是由身份提供者傳遞給服務提供者。在SAML中,一個身份提供者可能提供SAML斷言給許多服務提供者。同樣的,一個服務提供者可以依賴並信任許多獨立的身份提供者的斷言。
SAML沒有規定身份提供者的身份驗證方法;他們大多使用用户名和密碼,但也有其他驗證方式,包括採用多重要素驗證。諸如輕型目錄訪問協議RADIUSActive Directory等目錄服務允許用户使用一組用户名和密碼登錄,這是身份提供者使用身份驗證令牌的一個典型來源。許多流行的互聯網社交網絡服務也提供身份驗證服務,理論上他們也可以支持SAML交換。

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版本

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之間有着一些重要的差異。尤其是儘管這兩個規範同根同源,但兩者並不兼容。 [1] 

SAML設計

SAML 創建在一些現有標準之上:
  • Extensible Markup Language (XML)
  • 大多數SAML交換是以一個標準化的XML方言表示,這也是SAML的名稱(Security Assertion Markup Language)的根源。; XML Schema (XSD): SAML斷言和協議部分採用XML Schema。
  • XML Signature
  • SAML 1.1和SAML 2.0都為身份驗證和消息完整性使用基於XML Signature標準的數字簽名。
  • XML Encryption
  • SAML 2.0使用XML Encryption為加密名稱標識符、加密屬性和加密斷言提供元素(SAML 1.1沒有加密功能)。但XML加密據報有着嚴重的安全問題。
  • Hypertext Transfer Protocol (HTTP)
SAML很大程度上依賴超文本傳輸協議作為其通信協議。
  • SOAP
  • SAML指定使用SOAP,尤其是SOAP 1.1。
SAML定義了基於XML的斷言、協議、綁定和配置。術語SAML核心(SAML Core)指SAML斷言的一般語法和語義,以及用於請求和在系統實體間傳輸這些斷言的協議。SAML協議指來傳輸,而不是如何傳輸(後者由所選擇的綁定決定)。因此SAML核心只定義了“純粹的”SAML斷言,以及SAML的請求和響應元素。
SAML綁定決定SAML請求和響應如何映射到標準的消息或通信協議。一個重要的、同步的綁定是SAML SOAP綁定。
SAML配置是使用特定斷言、協議和綁定組成的適用於所定義使用情況的一個具體表現形式。 [1] 

SAML參見

參考資料
  • 1.    P. Mishra; 等, Differences between OASIS Security Assertion Markup Language (SAML) V1.1 and V1.0 (PDF), OASIS, May 2003 [7 April 2011], sstc-saml-diff-1.1-draft-01