隨着互聯網的普及,物聯網的逼近,數字化時代的真正到來,身份認證與訪問受權的重要性愈來愈凸顯。SAML(安全聲明標記語言)標準定義了供應商提供身份驗證與受權服務的方式。那麼關於SAML,咱們須要知道些什麼呢?html
首先,SAML是可在網絡中多臺計算機上共享安全憑證的一個開放標準。該標準描述了一個框架,可以使1臺計算機表明其餘多臺計算機執行某些安全功能。git
嚴格來說,SAML是指用於編碼全部這些信息的XML變體語言,但該術語也涵蓋了組成該標準的各類協議消息和資料。github
SAML 2.0在2005年引入,還是該標準的當前版本。以前的1.1版現在已基本棄用。瀏覽器
SAML是實現單點登陸(SSO)的一種方法,且SSO也確實是SAML最多見的用例。咱們能夠從SSO開始討論SAML的用途,而後深刻SAML的組件和操做。安全
單點登陸(SSO),可以使用戶提供一次安全憑證(好比用戶名/口令對),就能以之訪問多個系統、平臺、App或其餘資源。該方法能將用戶從記憶多組登陸名及口令的負擔中解脫出來,也可令IT團隊不用再將多個服務整合到一臺服務器上,真是讓事情簡單很多。服務器
好比說,公司可用SSO讓用戶既能登陸內部服務器上運行的專用Web應用,也能登陸託管在SaaS上的ERP(企業資源計劃)系統。網絡
想要發揮SSO的功用,用戶必需要能通過身份驗證就收到受權。基於其被證明的身份,訪問其餘多臺計算機。或者以另外一種方式:1臺計算機向在其餘多臺計算機上被受權的用戶提供服務。SAML標準定義了全部這些計算機之間相互安全通訊的方式。app
SAML術語中,提供者是系統中的一個實體,一般來說就是一臺服務器或其餘計算機,幫助用戶訪問所需的服務。提供或消費SAML服務的系統,通常被稱爲服務提供者;最重要的一種服務提供者,就是身份提供者。框架
身份提供者是系統中的一個實體,用於確保用戶真的是其所聲稱的身份——提供身份驗證。身份提供者還負責確認系統中各實體上哪些服務能夠被該用戶訪問。可按SAML標準提供身份驗證服務的實現有不少種,好比Salesforce就能充當身份提供者和這一角色,LDAP、RADIUS或活動目錄(AD)也能夠。編碼
SAML聲明就是一份XML文檔,全部咱們討論的信息都經過它在計算機間傳遞。一旦身份提供者確認你確實是所聲稱的用戶,且有權訪問你感興趣的內容或服務,它就會向實際提供這些服務的服務器發出SAML聲明。出於安全考慮,SAML聲明可被加密。
這看起來可能有點抽象,不妨看看下面這張SAML身份驗證事務處理的高級視圖。大多數狀況下用戶代理都是Web瀏覽器。
![img](http://www.aqniu.com/wp-content/uploads/2017/11/security-assertion-markup-language-saml-explainer-100738529-orig.jpg)
假設你是SSO環境中的用戶,你正試圖訪問服務器上的某資源。所涉及的一系列事件以下:
你會注意到,該過程當中不少步驟很抽象。好比說,SAML是怎麼知道恰當的身份提供者的,或者身份提供者是如何肯定你就是你所聲稱的用戶的,這些都沒有任何解釋。這不是什麼疏漏:SAML標準並無定義確切的實現方法,給IT留有不少餘地。
正如前文所述,有不少技術可供實際身份驗證過程所用;不管你選擇的是Salesforce、LDAP仍是別的什麼,SAML聲明都會將你通過驗證的信息在提供者間流轉。
若是你想了解更多有關SAML事務中消息傳遞的細節,你能夠深刻研究完整XML代碼,瞭解上述場景中從身份提供者傳遞給服務提供者的各類聲明。
OAuth(https://oauth.net/)是比SAML略新的標準,由谷歌和推特在2006年聯合開發。該標準被開發的部分緣由,是爲了補充SAML在移動平臺上的不足,且不是基於XML,而是基於JSON。
![img](http://www.aqniu.com/wp-content/uploads/2017/11/OAuth.jpg)
除了SAML不那麼吸引人的移動支持,這兩者之間的區別在哪裏呢?如咱們所見,SAML標準定義了提供者提供身份驗證和受權服務的方式。OAuth則否則,僅處理受權。
OpenID Connect(http://openid.net/connect/)是更新的標準,於2014年開發,提供身份驗證服務,處於OAuth上層。
![img](http://www.aqniu.com/wp-content/uploads/2017/11/OpenID.jpg)
另外一個主要的不一樣,就是其用例。SAML理論上用於開放互聯網,實際上最常部署在企業內網,出於單點登陸目的。相比之下,OAuth則是谷歌和推特爲了整個互聯網而設計的。
原文連接:https://www.aqniu.com/tools-tech/29359.html 做者:nana 星期六, 十一月 11, 2017
Authing 提供專業的身份認證和受權服務。
咱們爲開發者和企業提供用以保證應用程序安全所需的認證模塊,這讓開發人員無需成爲安全專家。
你能夠將任意平臺的應用接入到 Authing(不管是新開發的應用仍是老應用均可以),同時你還能夠自定義應用程序的登陸方式(如:郵箱/密碼、短信/驗證碼、掃碼登陸等)。
你能夠根據你使用的技術,來選擇咱們的 SDK 或調用相關 API 來接入你的應用。當用戶發起受權請求時,Authing 會幫助你認證他們的身份和返回必要的用戶信息到你的應用中。