轉載 | 科普一下 SAML:安全聲明標記語言

隨着互聯網的普及,物聯網的逼近,數字化時代的真正到來,身份認證與訪問授權的重要性越來越凸顯。SAML(安全聲明標記語言)標準定義了供應商提供身份驗證與授權服務的方式。那麼關於SAML,我們需要知道些什麼呢?

首先,SAML是可在網絡中多臺計算機上共享安全憑證的一個開放標準。該標準描述了一個框架,可使1臺計算機代表其他多臺計算機執行某些安全功能。

  • 身份驗證:確定用戶身份與其所聲稱的相符
  • 授權:確定用戶是否有權訪問特定系統或內容

嚴格來講,SAML是指用於編碼所有這些信息的XML變體語言,但該術語也涵蓋了組成該標準的各種協議消息和資料。

SAML 2.0在2005年引入,仍是該標準的當前版本。之前的1.1版如今已基本棄用。

SAML是實現單點登錄(SSO)的一種方法,且SSO也確實是SAML最常見的用例。我們可以從SSO開始討論SAML的用途,然後深入SAML的組件和操作。

SSO是什麼?它能幹什麼?

單點登錄(SSO),可使用戶提供一次安全憑證(比如用戶名/口令對),就能以之訪問多個系統、平臺、App或其他資源。該方法能將用戶從記憶多組登錄名及口令的負擔中解脫出來,也可令IT團隊不用再將多個服務整合到一臺服務器上,真是讓事情簡單不少。

比如說,公司可用SSO讓用戶既能登錄內部服務器上運行的專用Web應用,也能登錄託管在SaaS上的ERP(企業資源計劃)系統。

想要發揮SSO的功用,用戶必須要能經過身份驗證就收到授權。基於其被證實的身份,訪問其他多臺計算機。或者以另一種方式:1臺計算機向在其他多臺計算機上被授權的用戶提供服務。SAML標準定義了所有這些計算機之間相互安全通信的方式。

SAML提供者是什麼?

SAML術語中,提供者是系統中的一個實體,通常來講就是一臺服務器或其他計算機,幫助用戶訪問所需的服務。提供或消費SAML服務的系統,一般被稱爲服務提供者;最重要的一種服務提供者,就是身份提供者。

身份提供者是什麼?

身份提供者是系統中的一個實體,用於確保用戶真的是其所聲稱的身份——提供身份驗證。身份提供者還負責確認系統中各實體上哪些服務可以被該用戶訪問。可按SAML標準提供身份驗證服務的實現有很多種,比如Salesforce就能充當身份提供者和這一角色,LDAP、RADIUS或活動目錄(AD)也可以。

SAML聲明是什麼?

SAML聲明就是一份XML文檔,所有我們討論的信息都通過它在計算機間傳遞。一旦身份提供者確認你確實是所聲稱的用戶,且有權訪問你感興趣的內容或服務,它就會向實際提供這些服務的服務器發出SAML聲明。出於安全考慮,SAML聲明可被加密。

SAML身份驗證如何進行

這看起來可能有點抽象,不妨看看下面這張SAML身份驗證事務處理的高級視圖。大多數情況下用戶代理都是Web瀏覽器。

img

假設你是SSO環境中的用戶,你正試圖訪問服務器上的某資源。所涉及的一系列事件如下:

  1. 你試圖訪問服務器上的資源,也就是SAML術語中的服務提供者。該服務提供者查驗你是否是系統中經驗證過的用戶。如果你是,直接跳轉到步驟7;如果你不是,服務提供者開始身份驗證過程。
  2. 服務提供者爲你確定恰當的身份提供者,並將你重定向到該提供者——也就是SSO服務。
  3. 你的瀏覽器向SSO服務發送身份驗證請求;該服務對你進行識別。
  4. SSO服務返回一個XHTML文檔,在SAMLResponse參數中包含有服務提供者所需的身份驗證信息。
  5. SAMLResponse參數被傳遞給服務提供者。
  6. 服務提供者處理該響應,併爲你創建安全上下文——基本上,就是讓你登錄進去,然後告訴你你請求的資源在哪裏。
  7. 有了該信息,你就可以再次請求你感興趣的資源了。
  8. 該資源最終被返回給你!

你會注意到,該過程中很多步驟很抽象。比如說,SAML是怎麼知道恰當的身份提供者的,或者身份提供者是如何確定你就是你所聲稱的用戶的,這些都沒有任何解釋。這不是什麼疏漏:SAML標準並沒有定義確切的實現方法,給IT留有很多餘地。

正如前文所述,有很多技術可供實際身份驗證過程所用;無論你選擇的是Salesforce、LDAP還是別的什麼,SAML聲明都會將你經過驗證的信息在提供者間流轉。

如果你想了解更多有關SAML事務中消息傳遞的細節,你可以深入研究完整XML代碼,瞭解上述場景中從身份提供者傳遞給服務提供者的各種聲明。

SAML vs. OAuth:其間區別是什麼?

OAuth

OAuth(https://oauth.net/)是比SAML略...,由谷歌和推特在2006年聯合開發。該標準被開發的部分原因,是爲了補充SAML在移動平臺上的不足,且不是基於XML,而是基於JSON。

img

除了SAML不那麼吸引人的移動支持,這二者之間的區別在哪裏呢?如我們所見,SAML標準定義了提供者提供身份驗證和授權服務的方式。OAuth則不然,僅處理授權。

OpenID Connect

OpenID Connect(http://openid.net/connect/)是...,於2014年開發,提供身份驗證服務,處於OAuth上層。

img

另一個主要的不同,就是其用例。SAML理論上用於開放互聯網,實際上最常部署在企業內網,出於單點登錄目的。相比之下,OAuth則是谷歌和推特爲了整個互聯網而設計的。

原文鏈接:https://www.aqniu.com/tools-t... 作者:nana 星期六, 十一月 11, 2017

相關閱讀

什麼是 Authing?

Authing 提供專業的身份認證和授權服務。
我們爲開發者和企業提供用以保證應用程序安全所需的認證模塊,這讓開發人員無需成爲安全專家。
你可以將任意平臺的應用接入到 Authing(無論是新開發的應用還是老應用都可以),同時你還可以自定義應用程序的登錄方式(如:郵箱/密碼、短信/驗證碼、掃碼登錄等)。
你可以根據你使用的技術,來選擇我們的 SDK 或調用相關 API 來接入你的應用。當用戶發起授權請求時,Authing 會幫助你認證他們的身份和返回必要的用戶信息到你的應用中。

<div align=center>Authing 在應用交互中的位置</div>

歡迎關注 Authing 技術專欄

Authing 社區

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章