精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

安全斷言標(biāo)記語言SAML2.0的認(rèn)證機(jī)制與重要性

譯文
開發(fā) 前端
安全斷言標(biāo)記語言(SAML)2.0是目前被廣泛使用的開放標(biāo)準(zhǔn)之一,可被用于多方之間的認(rèn)證和授權(quán)。本文將和您討論其認(rèn)證機(jī)制與重要性。

[[407039]]

【51CTO.com快譯】作為一種在各個(gè)服務(wù)之間交換認(rèn)證和授權(quán)信息的方法,安全斷言標(biāo)記語言(Security Assertion Markup Language,SAML)2.0經(jīng)常被企業(yè)用在構(gòu)建內(nèi)部單點(diǎn)登錄(single sign-on,SSO)方案的過程中,以實(shí)現(xiàn)用戶登錄到統(tǒng)一的身份認(rèn)證服務(wù)處,進(jìn)而授予他們對于其他內(nèi)部服務(wù)子集的訪問權(quán)限。

從安全角度來看,采用SAML/SSO的優(yōu)勢主要體現(xiàn)在如下方面:

  • 提供單一的身份來源。當(dāng)有員工加入或離開公司時(shí),您既不必事無巨細(xì)地去更新每一項(xiàng)內(nèi)部服務(wù),又不必?fù)?dān)心錯過某個(gè)關(guān)聯(lián)性的重要服務(wù)。
  • 強(qiáng)制執(zhí)行一致性的認(rèn)證。可實(shí)施SAML/SSO的方法包括:多因素認(rèn)證和會話持續(xù)時(shí)間等。

下面,我們將重點(diǎn)討論SSO和SAML2.0的認(rèn)證機(jī)制與重要性。

SAML的相關(guān)術(shù)語

主體(Principal)

主體是參與認(rèn)證的用戶。您可以將其視為屏幕后面的實(shí)際訪問者。在下文中,我們將其假設(shè)為John Smith。主體通常會帶有諸如:名字、姓氏、電子郵件地址等附加的元數(shù)據(jù)(metadata)。此類元數(shù)據(jù)往往也被稱為身份信息(identity information),下面我們將重點(diǎn)闡述其重要性。

身份提供者(Identity Provider)

身份提供者常被簡稱IdP,是提供身份信息和認(rèn)證判斷的源服務(wù)。我們可以將身份提供者視為包含身份信息的數(shù)據(jù)庫。它能夠認(rèn)證主體,并將身份信息返回給服務(wù)提供者(詳見下文)。其中,最常見身份提供者應(yīng)用包括:Auth0、活動目錄聯(lián)合服務(wù)(Active Directory Federation Services,ADFS)和Okta。在實(shí)踐中,人們往往會將組織的所有用戶身份都整合到一個(gè)身份提供者處。

服務(wù)供應(yīng)者(Service Providers)

服務(wù)提供者通常被縮寫為SP,是向主體要求進(jìn)行認(rèn)證和獲取身份信息的服務(wù)。服務(wù)提供者獲取由身份提供者提供的認(rèn)證響應(yīng),并使用該信息來創(chuàng)建和配置各種會話。也就是說,服務(wù)提供者是某個(gè)應(yīng)用程序,它通過為其用戶提供單點(diǎn)登錄(SSO)機(jī)制,來實(shí)現(xiàn)資源的登錄和訪問。

此類應(yīng)用程序除了知曉主體的名稱或郵件地址以外,還需要請求獲得主體的其他身份信息,以實(shí)現(xiàn)基于角色的訪問控制(role-based access control,RBAC)。典型的服務(wù)提供者應(yīng)用包括:Github、Google Apps、以及Teleport(針對SSH和Kubernetes的一種訪問解決方案)。

流程(Flows)

目前,SAML支持兩種不同類型的流程:由服務(wù)提供者初始化的流程、以及由身份提供者初始化的流程。服務(wù)提供者初始化的流程往往是從服務(wù)提供者開始,被重定向到身份提供者處進(jìn)行認(rèn)證,然后在被重定向回服務(wù)提供者。該流程通常在用戶單擊“使用SSO登錄”按鈕時(shí)被啟動。

綁定(Bindings)

綁定是指在服務(wù)提供者和身份提供者之間傳輸?shù)臄?shù)據(jù)格式。HTTP重定向綁定和HTTP POST綁定是目前最為流行的兩種模式。其中,HTTP重定向綁定使用HTTP重定向和查詢參數(shù)來傳輸數(shù)據(jù);此類綁定通常被用在認(rèn)證的請求中。HTTP POST綁定則使用各種HTTP POST表單來傳輸數(shù)據(jù),此類綁定通常被用在認(rèn)證的響應(yīng)中。

斷言(Assertions)

斷言是身份提供者對主體所做的聲明,包括:主體的電子郵件地址、與之關(guān)聯(lián)的組或角色等。服務(wù)提供者使用斷言為主體創(chuàng)建和配置會話。也就是說,斷言定義了身份提供者在向服務(wù)提供者傳送的過程中,包含了主體具有哪些身份信息。

SAML的登錄流

為了說明SAML登錄的工作原理,我們將在如下示例中使用Teleport作為服務(wù)提供者,使用Auth0作為身份提供者。SAML登錄的基本流程,如下圖所示:

1. 用戶單擊“通過Auth0登錄”按鈕,選擇使用SAML登錄,而不是使用Teleport的內(nèi)置用戶數(shù)據(jù)庫。Teleport會將用戶重定向到Auth0處。在此,用戶便是SAML中的主體。

2. Auth0要求用戶提供他們的用戶名(或電子郵件)、密碼、以及認(rèn)證令牌作為第二認(rèn)證因素(2FA)。

3. 如果提供的信息正確,Auth0將獲取主體的身份信息,并將其作為斷言返回給Teleport。

4. Teleport會從Auth0處接收到身份信息,進(jìn)而創(chuàng)建用戶會話。

配置

身份提供者往往擁有自己獨(dú)特的配置方法。下面是身份提供者與服務(wù)提供者在協(xié)作時(shí)需要的最少配置集:

  • 斷言消費(fèi)者服務(wù)(Assertion Consumer Service,ACS)的URL是服務(wù)提供者的端點(diǎn),身份提供者將其認(rèn)證的響應(yīng)重定向到該端點(diǎn)處。由于它將被用于傳輸個(gè)人身份信息(Personally Identifiable Information,PII),因此該端點(diǎn)應(yīng)當(dāng)被配置為HTTPS類型。
  • 生成并上傳用于簽發(fā)認(rèn)證請求的簽名密鑰(詳見下文)。
  • 對斷言中所包含的有關(guān)主體信息的來源和格式進(jìn)行配置。身份提供者至少需要發(fā)送NameID、以及組成員等信息。

服務(wù)提供者的配置通常比較簡單,并且可以通過解析身份提供者所提供的元數(shù)據(jù),來自動完成配置。如下Django(譯者注:一個(gè)開放源代碼的Web應(yīng)用框架,由Python編寫而成。)代碼段展示了簡單的身份提供者元數(shù)據(jù)的XML。其中,最重要的標(biāo)簽當(dāng)屬SingleSignOnService和KeyDescriptor。具體而言,SingleSignOnService標(biāo)簽定義了有待發(fā)送認(rèn)證請求的綁定和端點(diǎn),而KeyDescriptor標(biāo)簽則包含了有待認(rèn)證響應(yīng)的身份提供者的公鑰。

  1. <md:EntityDescriptor> 
  2.   <md:IDPSSODescriptor> 
  3.     <md:KeyDescriptor use="signing"
  4.       <ds:KeyInfo> 
  5.         <ds:X509Data> 
  6.           <ds:X509Certificate> 
  7.             MIICMjCCAZugAwIBAgIBADANBgkqhkiG9w0BAQ0FADA2MQswCQYDVQQGEwJ1czEL 
  8.             MAkGA1UECAwCQ0ExDDAKBgNVBAoMA2lkcDEMMAoGA1UEAwwDaWRwMB4XDTE5MDQy 
  9.             NjE4NTIxOFoXDTIwMDQyNTE4NTIxOFowNjELMAkGA1UEBhMCdXMxCzAJBgNVBAgM 
  10.             AkNBMQwwCgYDVQQKDANpZHAxDDAKBgNVBAMMA2lkcDCBnzANBgkqhkiG9w0BAQEF 
  11.             AAOBjQAwgYkCgYEA1mKmlbr/SiHOhgdROpYeze96mw0WbO+BdJYDceeuNkaw0zOU 
  12.             CKZI6TNgrNsqEnLOyWYy5ywA9XA6Ni2qQTuKqapsMT3I1s9DMUg2ln7tTzNdhE02 
  13.             fY4GVjiCw7i9YJ+cgcMZh8qL0yoilrLpRLzLrRC6rApqYfEwn+5FPKtTt7cCAwEA 
  14.             AaNQME4wHQYDVR0OBBYEFNvFMRtHJ4D327dbRbxhWceXnwd0MB8GA1UdIwQYMBaA 
  15.             FNvFMRtHJ4D327dbRbxhWceXnwd0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN 
  16.             BQADgYEAX0I5zpGqI7vzzs8CDyokux1JZzfu+O3P5GfOwUaIG9y01FzxgbL2MRKQ 
  17.             oTXMAed97Q6vHA5cffvteu/rPcerpGmFj5h3wv5u+D0ch5s/Mk/Ug6S+x6k3CC+P 
  18.             kHimi6OEslFecDMhghUtPJAmhOGnTRwLr7hVeJXBHXWCTXA7aGE= 
  19.           </ds:X509Certificate> 
  20.         </ds:X509Data> 
  21.       </ds:KeyInfo> 
  22.     </md:KeyDescriptor> 
  23.     <md:NameIDFormat> 
  24.        urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress 
  25.     </md:NameIDFormat> 
  26.     <md:SingleSignOnService 
  27.       Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
  28.       Location="https://idp.example.com/saml"/> 
  29.     <md:SingleSignOnService  
  30.       Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" 
  31.       Location="https://idp.example.com/saml"/> 
  32.   </md:IDPSSODescriptor> 
  33. </md:EntityDescriptor> 

認(rèn)證請求

在主體登錄的過程中,服務(wù)提供者會創(chuàng)建一個(gè)AuthnRequest的XML文檔,通過對其序列化(可采用base64、壓縮和URL編碼),將其作為查詢參數(shù)添加到URL中,并將主體的瀏覽器重定向到身份提供者的登錄頁面處。服務(wù)提供者會請求身份提供者以HTTPS的方式,代為執(zhí)行認(rèn)證。如下URL示例便是由HTTP重定向使用綁定AuthnRequest發(fā)送的:

  1. https://idp.example.com/saml?SAMLRequest=nFdpk6JK0%2F0rHc7... 

如下Django代碼段展示了由AuthnRequest編碼的SAMLRequest簡化參數(shù):

  1. <md:IDPSSODescriptor> 
  2.    <md:KeyDescriptor use=&quot;signing&quot;> 
  3.      <ds:KeyInfo> 
  4.        <ds:X509Data> 
  5.          <ds:X509Certificate> 
  6.            MIICMjCCAZugAwIBAgIBADANBgkqhkiG9w0BAQ0FADA2MQswCQYDVQQGEwJ1czEL 
  7.            MAkGA1UECAwCQ0ExDDAKBgNVBAoMA2lkcDEMMAoGA1UEAwwDaWRwMB4XDTE5MDQy 
  8.            NjE4NTIxOFoXDTIwMDQyNTE4NTIxOFowNjELMAkGA1UEBhMCdXMxCzAJBgNVBAgM 
  9.            AkNBMQwwCgYDVQQKDANpZHAxDDAKBgNVBAMMA2lkcDCBnzANBgkqhkiG9w0BAQEF 
  10.            AAOBjQAwgYkCgYEA1mKmlbr/SiHOhgdROpYeze96mw0WbO+BdJYDceeuNkaw0zOU 
  11.            CKZI6TNgrNsqEnLOyWYy5ywA9XA6Ni2qQTuKqapsMT3I1s9DMUg2ln7tTzNdhE02 
  12.            fY4GVjiCw7i9YJ+cgcMZh8qL0yoilrLpRLzLrRC6rApqYfEwn+5FPKtTt7cCAwEA 
  13.            AaNQME4wHQYDVR0OBBYEFNvFMRtHJ4D327dbRbxhWceXnwd0MB8GA1UdIwQYMBaA 
  14.            FNvFMRtHJ4D327dbRbxhWceXnwd0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN 
  15.            BQADgYEAX0I5zpGqI7vzzs8CDyokux1JZzfu+O3P5GfOwUaIG9y01FzxgbL2MRKQ 
  16.            oTXMAed97Q6vHA5cffvteu/rPcerpGmFj5h3wv5u+D0ch5s/Mk/Ug6S+x6k3CC+P 
  17.            kHimi6OEslFecDMhghUtPJAmhOGnTRwLr7hVeJXBHXWCTXA7aGE= 
  18.          </ds:X509Certificate> 
  19.        </ds:X509Data> 
  20.      </ds:KeyInfo> 
  21.    </md:KeyDescriptor> 
  22.    <md:NameIDFormat> 
  23.       urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress 
  24.    </md:NameIDFormat> 
  25.    <md:SingleSignOnService 
  26.      Binding=&quot;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST&quot; 
  27.      Location=&quot;https://idp.example.com/saml&quot;></md:SingleSignOnService> 
  28.    <md:SingleSignOnService  
  29.      Binding=&quot;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect&quot; 
  30.      Location=&quot;https://idp.example.com/saml&quot;></md:SingleSignOnService> 
  31.  </md:IDPSSODescriptor> 
  32. /md:EntityDescriptor>" 

服務(wù)提供者會生成一個(gè)較大的安全隨機(jī)數(shù),并將其插入AuthnRequest標(biāo)簽中的ID字段。該值通常會被存儲在本地?cái)?shù)據(jù)庫中,可用于將請求與來自身份提供者的響應(yīng)進(jìn)行比對,以防止惡意的第三方在不知道ID的情況下,發(fā)送未經(jīng)請求的響應(yīng)。

同時(shí),為了防止重復(fù)使用已過期的AuthnRequests,身份提供者需要存儲和跟蹤那些已被使用過的ID值??梢?,如果沒有時(shí)間限制的話,這將會導(dǎo)致身份提供者所需的存儲量不斷攀升。而IssueInstant恰好可以為請求產(chǎn)生有效的窗口。

服務(wù)提供者負(fù)責(zé)簽發(fā)AuthnRequest。而在SAML的簽名方案中包含了:簽名、用于簽發(fā)請求的密鑰、以及有關(guān)如何在Signature標(biāo)簽中計(jì)算簽名的所有信息。因此身份提供者不僅應(yīng)該認(rèn)證用于簽發(fā)請求的密鑰,還應(yīng)該認(rèn)證該密鑰是否與在配置時(shí)上傳的密鑰為同一個(gè)(請參閱上一節(jié))。如果密鑰或簽名值不匹配、或丟失的話,身份提供者就會判定請求為非法,并直接拒絕之。實(shí)際上,SAML會使用XML數(shù)字簽名來簽發(fā)請求的內(nèi)容,其本身是一個(gè)龐大而復(fù)雜的主題。您可以通過鏈接--https://www.di-mgt.com.au/xmldsig.html,來進(jìn)一步了解如何使用XMLDSIG去簽發(fā)XML文檔。

認(rèn)證響應(yīng)

接著,讓我們回到認(rèn)證的流程。如果主體輸入了正確的登錄憑據(jù),身份提供者將會對服務(wù)提供者的ACS URL(例如,在本示例中為--https://sp.example.com/saml/acs)執(zhí)行“302重定向”。其正文中包含了認(rèn)證的響應(yīng)。如下的Django代碼段是一個(gè)簡化版的SAMLResponse:

  1. saml2p: Response 
  2. Destination=\"https://sp.example.com/saml/acs\" 
  3. ID=\"id35287812421219341967493380\" 
  4. InResponseTo=\"bcf0b634-67b4-4dc9-a436-4e5cfcfb80e2\" 
  5. IssueInstant=\"2019-04-18T18:51:46.729Z\"
  6. <ds:Signature> 
  7. <ds:SignedInfo> 
  8. <ds:CanonicalizationMethod 
  9. Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" /> 
  10. <ds:SignatureMethod 
  11. Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\" /> 
  12. <ds:Reference URI=\"#id35287812421219341967493380\"
  13. <ds:Transforms> 
  14. <ds:Transform 
  15. Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\" /> 
  16. <ds:Transform 
  17. Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\",/> 
  18. </ds:Transforms> 
  19. <ds:DigestMethod 
  20. Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\" /> 
  21. <ds:DigestValue> 
  22. tyLUm4r2isgN+L6sRcqDSEa1Zb7WQbQJG6PpLcf3Mrc= 
  23. </ds:DigestValue> 
  24. </ds:Reference> 
  25. </ds:SignedInfo> 
  26. <ds:SignatureValue> 
  27. XjqbZty/QkqTnMV8YsS2XJ3qgVLPGNC67o/WmzkzoAyl3SBOCGllV4UdijkTjhgykQP7MVXyCql0 
  28. eRtIMJ++rbi3OxCSc0LN67znuTS7cAfcOQzYBtYX2R9w3GlEAO0kZusWYlP3cu/ObmQZUQ7CSgr4 
  29. DRXsVWRhSmmpxHl6klC6c10eWiIlK7Ccpvvvb2hlwl8anyuO/CcKH0n/Rb9vHWtsAlqKXZ8G4X6M 
  30. 77AfRFC7yDWk+8B784109phQxcxoDYjuQNO5IkiRE6J2LnkmuaPoKVyTtpP2JYLiYMSBu8laDsnZ 
  31. I/ewOtBwr16j9oOJpgHPQufQJfvcg+rPEwkptg== 
  32. </ds:SignatureValue> 
  33. <ds:KeyInfo> 
  34. <ds:X509Data> 
  35. <ds:X509Certificate> 
  36. MIICMjCCAZugAwIBAgIBADANBgkqhkiG9w0BAQ0FADA2MQswCQYDVQQGEwJ1czEL 
  37. MAkGA1UECAwCQ0ExDDAKBgNVBAoMA2lkcDEMMAoGA1UEAwwDaWRwMB4XDTE5MDQy 
  38. NjE4NTIxOFoXDTIwMDQyNTE4NTIxOFowNjELMAkGA1UEBhMCdXMxCzAJBgNVBAgM 
  39. AkNBMQwwCgYDVQQKDANpZHAxDDAKBgNVBAMMA2lkcDCBnzANBgkqhkiG9w0BAQEF 
  40. AAOBjQAwgYkCgYEA1mKmlbr/SiHOhgdROpYeze96mw0WbO+BdJYDceeuNkaw0zOU 
  41. CKZI6TNgrNsqEnLOyWYy5ywA9XA6Ni2qQTuKqapsMT3I1s9DMUg2ln7tTzNdhE02 
  42. fY4GVjiCw7i9YJ+cgcMZh8qL0yoilrLpRLzLrRC6rApqYfEwn+5FPKtTt7cCAwEA 
  43. AaNQME4wHQYDVR0OBBYEFNvFMRtHJ4D327dbRbxhWceXnwd0MB8GA1UdIwQYMBaA 
  44. FNvFMRtHJ4D327dbRbxhWceXnwd0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN 
  45. BQADgYEAX0I5zpGqI7vzzs8CDyokux1JZzfu+O3P5GfOwUaIG9y01FzxgbL2MRKQ 
  46. oTXMAed97Q6vHA5cffvteu/rPcerpGmFj5h3wv5u+D0ch5s/Mk/Ug6S+x6k3CC+P 
  47. kHimi6OEslFecDMhghUtPJAmhOGnTRwLr7hVeJXBHXWCTXA7aGE= 
  48. </ds:X509Certificate> 
  49. </ds:X509Data> 
  50. </ds:KeyInfo> 
  51. </ds:Signature> 
  52. <saml2p:Status> 
  53. <saml2p:StatusCode 
  54. Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\" /> 
  55. </saml2p:Status> 
  56. <saml2:Assertion 
  57. ID=\"id35287812421980111258419174\" 
  58. IssueInstant=\"2019-04-18T18:51:46.729Z\"
  59. <ds:Signature> 
  60. <ds:SignedInfo> 
  61. <ds:CanonicalizationMethod 
  62. Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\" /> 
  63. <ds:SignatureMethod 
  64. Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\" /> 
  65. <ds:Reference URI=\"#id35287812421980111258419174\"
  66. <ds:Transforms> 
  67. <ds:Transform 
  68. Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\" /> 
  69. <ds:Transform 
  70. Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/> 
  71. </ds:Transforms> 
  72. <ds:DigestMethod 
  73. Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\" /> 
  74. <ds:DigestValue> 
  75. VKPsgTPABNq1SvInCMXd04LZCvRYMnJzEeT5oIs70hw= 
  76. </ds:DigestValue> 
  77. </ds:Reference> 
  78. </ds:SignedInfo> 
  79. <ds:SignatureValue> 
  80. gsUzQuivXX378HkYNI+plBkp1BvPUNmJD+kh825nHwIBNd019IxffVmOfRAQAkZhT6rqxWhO5/Yc 
  81. JGR5J0qjJVmrRrJ/ipT4VfuJsbn346nEFSMU15D0h3UHrvl651C+NStyXsi8Q8502Qe0ChHOtEXM 
  82. rw9HWPwYtJX0rlpNEzLUnEQPvJ4pd3bz9SIl/YXMNTxE7NCDOxPXKtA4namkkweilxTCynM6A1kn 
  83. 6gEWaXhLMwLLAV6kOtivdVksBPzR9BeZ7RPpXeqt0qN62L4NaHq3OsdjgtQr9sllssD1fEek1eU4 
  84. giCzPgb1+LjvD9dpFH5pcLt9YlwHyYgEBBLOQg== 
  85. </ds:SignatureValue> 
  86. <ds:KeyInfo> 
  87. <ds:X509Data> 
  88. <ds:X509Certificate> 
  89. MIICMjCCAZugAwIBAgIBADANBgkqhkiG9w0BAQ0FADA2MQswCQYDVQQGEwJ1czEL 
  90. MAkGA1UECAwCQ0ExDDAKBgNVBAoMA2lkcDEMMAoGA1UEAwwDaWRwMB4XDTE5MDQy 
  91. NjE4NTIxOFoXDTIwMDQyNTE4NTIxOFowNjELMAkGA1UEBhMCdXMxCzAJBgNVBAgM 
  92. AkNBMQwwCgYDVQQKDANpZHAxDDAKBgNVBAMMA2lkcDCBnzANBgkqhkiG9w0BAQEF 
  93. AAOBjQAwgYkCgYEA1mKmlbr/SiHOhgdROpYeze96mw0WbO+BdJYDceeuNkaw0zOU 
  94. CKZI6TNgrNsqEnLOyWYy5ywA9XA6Ni2qQTuKqapsMT3I1s9DMUg2ln7tTzNdhE02 
  95. fY4GVjiCw7i9YJ+cgcMZh8qL0yoilrLpRLzLrRC6rApqYfEwn+5FPKtTt7cCAwEA 
  96. AaNQME4wHQYDVR0OBBYEFNvFMRtHJ4D327dbRbxhWceXnwd0MB8GA1UdIwQYMBaA 
  97. FNvFMRtHJ4D327dbRbxhWceXnwd0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEN 
  98. BQADgYEAX0I5zpGqI7vzzs8CDyokux1JZzfu+O3P5GfOwUaIG9y01FzxgbL2MRKQ 
  99. oTXMAed97Q6vHA5cffvteu/rPcerpGmFj5h3wv5u+D0ch5s/Mk/Ug6S+x6k3CC+P 
  100. kHimi6OEslFecDMhghUtPJAmhOGnTRwLr7hVeJXBHXWCTXA7aGE= 
  101. </ds:X509Certificate> 
  102. </ds:X509Data> 
  103. </ds:KeyInfo> 
  104. </ds:Signature> 
  105. <saml2:Subject> 
  106. <saml2:NameID> 
  107. jsmith@example.com 
  108. </saml2:NameID> 
  109. <saml2:SubjectConfirmation> 
  110. <saml2:SubjectConfirmationData 
  111. InResponseTo=\"bcf0b634-67b4-4dc9-a436-4e5cfcfb80e2\" 
  112. NotOnOrAfter=\"2019-04-18T18:56:46.730Z\" 
  113. Recipient=\"https://sp.example.com/saml/acs\" /> 
  114. </saml2:SubjectConfirmation> 
  115. </saml2:Subject> 
  116. <saml2:Conditions 
  117. NotBefore=\"2019-04-18T18:46:46.730Z\" 
  118. NotOnOrAfter=\"2019-04-18T18:56:46.730Z\" 
  119. xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\"
  120. </saml2:Conditions> 
  121. <saml2:AuthnStatement 
  122. AuthnInstant=\"2019-04-18T18:51:46.729Z\" 
  123. SessionIndex=\"bcf0b634-67b4-4dc9-a436-4e5cfcfb80e2\"
  124. </saml2:AuthnStatement> 
  125. <saml2:AttributeStatement> 
  126. <saml2:Attribute 
  127. Name=\"logins\"
  128. <saml2:AttributeValue> 
  129. root 
  130. </saml2:AttributeValue> 
  131. <saml2:AttributeValue> 
  132. jsmith 
  133. </saml2:AttributeValue> 
  134. </saml2:Attribute> 
  135. <saml2:Attribute 
  136. Name=\"groups\"
  137. <saml2:AttributeValue> 
  138. admins 
  139. </saml2:AttributeValue> 
  140. <saml2:AttributeValue> 
  141. developers 
  142. </saml2:AttributeValue> 
  143. </saml2:Attribute> 
  144. </saml2:AttributeStatement> 
  145. </saml2:Assertion> 
  146. </saml2p:Response> 

當(dāng)服務(wù)提供者接收到認(rèn)證響應(yīng)時(shí),應(yīng)當(dāng)檢查InResponseTo屬性所引用的AuthnRequest的ID,是否由真實(shí)的服務(wù)提供者所發(fā)送。同時(shí),IssueInstant屬性可以用來確定響應(yīng)的有效性窗口的范圍。

由于認(rèn)證響應(yīng)被傳遞到ACS URL處時(shí)并不會執(zhí)行客戶端認(rèn)證,因此這就是為什么我們需要Signature去認(rèn)證響應(yīng)中的客戶端,是否為真實(shí)的身份提供者的原因。這與webhooks(一種自動化部署)的概念非常相似:那些被用于認(rèn)證客戶端的信息(在webhooks中通常是指API密鑰)需要提前在帶外完成交換。

對應(yīng)的響應(yīng)中有著四個(gè)新的標(biāo)簽:Status、Subject、Conditions、以及AttributeStatement。其中:

  • Status包含了認(rèn)證是否成功的結(jié)果。
  • Subject標(biāo)識了通過認(rèn)證的主體。例如在上例中,NameID標(biāo)簽就包含了認(rèn)證主體的電子郵件地址:jsmith@example.com。
  • Conditions定義了斷言的限制。例如,NotBefore和NotOnOrAfter屬性定義了斷言有效期的持續(xù)時(shí)長。這樣可以防止惡意行為者通過記錄有效的認(rèn)證響應(yīng),進(jìn)行重放(replaying)攻擊。
  • AttributeStatement包含了身份提供者針對主體所做出的斷言。如前所述,斷言通常會包含諸如:組織內(nèi)部的組成員身份、受允許的登錄、以及有關(guān)主體的其他識別信息。在上例中,該主體屬于admins和developers組,并被允許以root和jsmith身份登錄。

可見,我們需要記住的是:主體的斷言只是在識別信息時(shí)的一個(gè)快照,如果提供長期存在(long-lived)的斷言、或會話,就會存在安全隱患。因此,我們需要讓斷言和會話保持合理且短暫(short-lived),以及通過強(qiáng)制性的重新認(rèn)證,來確保身份提供者對主體所做出的斷言的有效性。

小結(jié)

綜上所述,服務(wù)提供者會根據(jù)判斷的結(jié)果,來提供響應(yīng)。只有成功的響應(yīng)才會在內(nèi)部服務(wù)中創(chuàng)建會話,提供單一的身份源,以及實(shí)現(xiàn)橫跨內(nèi)部服務(wù)的一致性認(rèn)證。為此,服務(wù)提供者通常需要知道主體所屬的用戶組,并據(jù)此實(shí)施基于角色的訪問控制策略。例如,只有來自“SSH”組的用戶,才能夠訪問生產(chǎn)環(huán)境;而其他組的用戶,則需要根據(jù)不同的策略,去訪問Kubernetes集群、或CI/CD管道。

總的說來,SAML認(rèn)證解決了如下三個(gè)重要問題:

  • SAML顯著改善了用戶的體驗(yàn)。用戶只需要記住他們常用的單一身份憑據(jù),而不必針對不同的應(yīng)用,使用不同的用戶名和密碼。
  • SAML允許應(yīng)用程序開發(fā)人員將身份管理和認(rèn)證實(shí)施,外包給外部的提供者,而無需自行實(shí)現(xiàn)。
  • 最重要的是,SAML顯著降低了組織內(nèi)針對訪問管理的運(yùn)營開銷。如果有員工離開或轉(zhuǎn)移到其他團(tuán)隊(duì),他們的訪問權(quán)限將會在連接到身份提供者所對應(yīng)的應(yīng)用時(shí),自動被撤銷或降級。

原文標(biāo)題:How SAML 2.0 Authentication Works and Why It Matters,作者:Ev Kontsevoy

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2017-11-15 06:20:36

SAML身份認(rèn)證訪問授權(quán)

2011-08-11 10:12:11

2022-09-21 14:07:56

OT安全物聯(lián)網(wǎng)

2019-06-03 12:58:03

多云標(biāo)記云計(jì)算

2021-06-29 20:50:29

端點(diǎn)安全網(wǎng)絡(luò)安全數(shù)據(jù)安全

2009-09-07 09:03:05

思科認(rèn)證CCNA學(xué)習(xí)的重要性

2016-08-29 20:31:17

2015-06-02 13:10:55

2018-01-23 08:07:37

2024-01-01 16:16:26

2009-02-15 16:32:19

2023-02-17 15:16:35

2023-06-05 16:04:00

物聯(lián)網(wǎng)物聯(lián)網(wǎng)安全

2021-07-19 16:23:55

數(shù)據(jù)安全滴滴大數(shù)據(jù)

2021-12-28 00:29:00

網(wǎng)絡(luò)安全Java編程語言

2023-04-28 09:52:27

2020-01-07 22:26:32

加密網(wǎng)絡(luò)安全網(wǎng)絡(luò)流量

2019-04-04 13:42:19

2023-11-29 14:52:38

2013-03-11 10:42:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

成人av在线天堂| 精品国产91久久久久久久妲己 | 日本少妇xxxx动漫| 国产+成+人+亚洲欧洲在线 | 伊人中文字幕在线观看| 成人高清av| 欧美一区二区精品| 欧美日韩二三区| 一区二区三区视频网站 | 在线免费观看污视频| 欧美最新精品| 日韩毛片在线免费观看| 国产免费一区二区三区| 国产美女www| 欧美精品不卡| 亚洲天堂免费观看| 91网址在线观看精品| av剧情在线观看| 国产亚洲欧洲997久久综合| 91精品国产综合久久香蕉| 国产一级免费av| 日韩三级在线| 亚洲成人黄色在线| 亚洲综合婷婷久久| 理论片午夜视频在线观看| 亚洲欧洲精品一区二区三区不卡| 九色综合婷婷综合| 国产理论视频在线观看| 免播放器亚洲| 欧美激情中文网| 中文字幕第69页| 妖精视频一区二区三区免费观看| 欧美一区二区三区四区高清| 最近免费中文字幕中文高清百度| 四季久久免费一区二区三区四区| 国产欧美日韩在线| 精品国产福利| 国产熟女一区二区三区五月婷| 免费在线日韩av| 久久人人爽人人| 国产精品久久久久久久精| 国产一区二区区别| 日韩第一页在线| 91人人澡人人爽| av日韩一区| 欧美日韩国产首页在线观看| 草草草在线视频| 在线天堂资源| 精品国产乱码久久久久久婷婷 | 91精品国产视频| 中日韩美女免费视频网址在线观看 | 成人性生交大片免费看小说 | 成人三级网址| 国产精品视频看| 日韩久久不卡| 国产综合在线观看| 久久综合狠狠综合| 久久国产精品一区二区三区| 天天干天天操av| 成人av综合在线| 国产成人成网站在线播放青青 | 亚洲第一中文字幕| 香港三日本8a三级少妇三级99| 亚洲精品一区国产| 欧美电影免费提供在线观看| 性色av浪潮av| 99这里只有精品视频| 欧美一区二区二区| ass极品水嫩小美女ass| 一区二区日韩| 精品国产凹凸成av人导航| 国产成人精品无码片区在线| 亚洲伊人影院| 亚洲福利视频免费观看| 国产亚洲色婷婷久久99精品91| 嫩草国产精品入口| 亚洲欧美制服第一页| 美女被到爽高潮视频| 日韩精品不卡一区二区| 日韩视频免费中文字幕| 一区视频免费观看| 激情久久综合| 欧美亚洲视频在线观看| 日日夜夜狠狠操| 免费观看在线综合| 91精品天堂| 秋霞av鲁丝片一区二区| 国产亚洲欧美激情| 中文字幕一区二区三区精彩视频| 在线看三级电影| 精品久久中文字幕| 最新天堂中文在线| 6080成人| 亚洲天堂av在线免费观看| 亚洲 欧美 国产 另类| 自拍偷拍欧美| 欧美一级片一区| 91好色先生tv| 成人av在线一区二区三区| 久久亚洲免费| 麻豆网站在线观看| 午夜不卡av免费| 好男人www社区| 国产精品亚洲四区在线观看| 亚洲国产第一页| 国产7777777| 欧美日本久久| 国产精品av在线| 国产精品-色哟哟| 91麻豆6部合集magnet| 宅男一区二区三区| 一区一区三区| 日韩亚洲欧美中文三级| 37p粉嫩大胆色噜噜噜| 欧美gay男男猛男无套| 久久久久久网址| 中文字幕在线观看欧美| 波多野洁衣一区| 中文字幕一区二区三区四区五区| 极品在线视频| 日韩欧美一区中文| 色欲狠狠躁天天躁无码中文字幕 | 丝袜亚洲另类丝袜在线| 亚洲伊人第一页| 成人高清网站| 精品人伦一区二区三区蜜桃免费 | 久久青青草视频| 国产一区欧美日韩| 欧美三级网色| 国产三线在线| 91精品在线观看入口| 99久久久久久久久久| 激情丁香综合| 成人有码在线播放| 18免费在线视频| 欧美视频在线观看免费网址| 永久看看免费大片| 午夜久久免费观看| 国产精品青青在线观看爽香蕉| 无码精品在线观看| 亚洲图片一区二区| 97免费公开视频| 亚洲女同另类| 国产日韩欧美日韩大片| 黄色国产在线| 欧美日韩亚洲一区二| 亚洲男人在线天堂| 欧美特黄视频| 亚洲综合自拍一区| 国产精品一区二区三区视频网站| 欧美性猛交xxxx黑人交| 精品无人区无码乱码毛片国产 | 国产欧美一区二区在线| 日韩在线视频在线观看| 色先锋久久影院av| 26uuu另类亚洲欧美日本老年| 老牛影视av牛牛影视av| 亚洲国产精品人人做人人爽| 亚洲综合中文网| 欧美高清不卡| 99久热re在线精品996热视频 | 久久久女女女女999久久| 亚洲风情第一页| 亚洲午夜久久久久久久久久久| 欧美日韩一区二区区| 国产精品啊啊啊| 国产精品国产精品| 538在线视频| 日韩国产中文字幕| 免费看毛片网站| 久久久www成人免费毛片麻豆| 日本在线观看a| 美女亚洲一区| 日韩免费在线播放| 国产在线视频福利| 欧美三区在线观看| 老司机深夜福利网站| 国产在线麻豆精品观看| 成人毛片100部免费看| 国产一级成人av| 国产91av在线| 99se视频在线观看| 欧美一区二区三区视频| 久久久久99精品| 91视频在线观看免费| 欧美三级理论片| 在线精品国产| 欧美激情视频一区二区三区| 国产亚洲欧美日韩精品一区二区三区| 日韩视频免费中文字幕| 蜜臀av午夜精品| 91黄色免费版| 日韩a级片在线观看| 不卡的av网站| 久久婷婷综合色| 黄色成人在线网址| 亚洲mv在线看| 成人线上播放| 国产免费久久av| 福利写真视频网站在线| 一本一本久久a久久精品牛牛影视| 国产免费一区二区三区免费视频| 性久久久久久久久久久久| 香蕉久久久久久久| 成人国产精品免费观看| 亚洲免费看av| 亚洲全部视频| 中国人体摄影一区二区三区| 精品三级av| 成人日韩av在线| 最新日韩三级| 97精品在线视频| 精品美女在线观看视频在线观看| 日韩av影片在线观看| 国产剧情久久久| 黑人巨大精品| 亚洲激情 国产| 91福利免费视频| 日本韩国欧美一区| 精品无码久久久久久久久| 国产精品女上位| 美国黄色一级毛片| 国产不卡高清在线观看视频| 国内自拍视频网| 国产一区二区三区的电影| 亚洲小说欧美另类激情| 欧美另类69xxxxx| 国产一区二区三区无遮挡| 国产精品麻豆| 国产在线观看不卡| 精品国模一区二区三区| 午夜精品一区二区三区在线视频| 日韩在线资源| 一本大道亚洲视频| 日本视频在线观看一区二区三区| 9191久久久久久久久久久| 凹凸精品一区二区三区| 一本大道综合伊人精品热热| 狠狠躁夜夜躁人人爽天天高潮| 亚洲三级在线播放| 亚洲欧美精品久久| 中文字幕av一区二区三区| 在线免费观看麻豆| 久久综合一区二区| 国产精品久久久久久亚洲色| 国产成人综合亚洲网站| 亚洲黄色片免费看| 久久99精品国产麻豆不卡| 国产又大又黄又猛| 男男视频亚洲欧美| av在线无限看| 国产毛片久久| 又粗又黑又大的吊av| 99xxxx成人网| 成熟了的熟妇毛茸茸| 亚洲国产日本| 免费av手机在线观看| 在线观看一区视频| 很污的网站在线观看| 自产国语精品视频| 欧妇女乱妇女乱视频| 欧美日韩三级| 中文字幕无码精品亚洲资源网久久| 最新欧美人z0oozo0| 中文字幕欧美日韩一区二区三区| 婷婷亚洲综合| 日本黄xxxxxxxxx100| 欧美精品入口| 免费在线观看视频a| 国产精品久久777777毛茸茸| 男人操女人免费| 免费精品视频在线| 欧美性受xxxx黒人xyx性爽| 国产精品69久久久久水密桃| 无码国产精品一区二区免费式直播 | 69精品丰满人妻无码视频a片| 91九色精品| 亚洲精品天堂成人片av在线播放| 91久久亚洲| 毛片一区二区三区四区| 麻豆国产精品一区二区三区| 波多野结衣网页| 91亚洲国产成人精品一区二区三| 国产激情在线免费观看| 国产精品青草久久| 欧美精品一区二区成人| 欧美色视频日本版| 一级片视频播放| 精品国产乱码久久久久久图片| 日本a一级在线免费播放| 深夜福利国产精品| 变态调教一区二区三区| 国产成人午夜视频网址| 国产日韩欧美中文在线| 欧美成人dvd在线视频| 久久精品免费一区二区三区| 免费看黄在线看| 蜜臀av一区二区三区| 色哟哟视频在线| 欧美国产综合色视频| 国产亚洲精品久久777777| 一本色道久久综合精品竹菊| 国产精品久久久久久久一区二区 | 美日韩丰满少妇在线观看| 嗯啊主人调教在线播放视频 | 国产午夜精品一区二区三区| sm国产在线调教视频| 欧美一级电影久久| 欧美一级大片在线视频| 日本一区二区高清视频| 伊人成人在线视频| 一道本在线免费视频| 99久久er热在这里只有精品15| 国产三级精品三级观看| 一本久久综合亚洲鲁鲁五月天 | 激情图片在线观看高清国产| 国产激情综合五月久久| 久久a爱视频| 黄色片免费在线观看视频| 免费高清在线一区| jizz欧美性20| 午夜国产精品一区| www.天堂av.com| 日韩中文字幕免费| 日韩大尺度黄色| 久久66热这里只有精品| 欧美aa国产视频| 超碰人人草人人| 国产蜜臀av在线一区二区三区| 一级片免费网址| 欧美不卡一二三| av黄色在线| 91精品久久久久久久久不口人| 国产一区二区三区电影在线观看| 国产96在线 | 亚洲| 国产成人在线视频播放| www日韩在线| 欧美久久婷婷综合色| 国产福利在线| 国产成人精品电影| 国产午夜一区| 无码人妻丰满熟妇区毛片18| 成人av手机在线观看| 国产在线拍揄自揄拍| 日韩美一区二区三区| 四虎影院观看视频在线观看| 99国精产品一二二线| 欧美黄污视频| 中文字幕第10页| 亚洲精品乱码久久久久| 亚洲av无码国产精品久久不卡| 久久香蕉国产线看观看av| 自拍偷拍亚洲图片| 桥本有菜av在线| 国精品**一区二区三区在线蜜桃 | 国内精品久久影院| 久久中文资源| 久色视频在线播放| 久久久久国产一区二区三区四区| 日本视频网站在线观看| 亚洲欧洲美洲在线综合| 99只有精品| 中文字幕久久一区| 国产成人av网站| 激情五月色婷婷| 国产视频亚洲视频| 偷拍视频一区二区三区| 夜夜爽www精品| 国产一区二区在线视频| 久久久久久久久久99| 亚洲精品福利资源站| 网友自拍亚洲| 制服诱惑一区| 国产99久久久精品| 日韩在线视频免费播放| 国产亚洲综合久久| 亚洲精品大全| 久久久久久www| 国产亚洲美州欧州综合国| 一区二区视频在线免费观看| 久久成年人免费电影| 老牛国内精品亚洲成av人片| 国产精品欧美激情在线观看| 欧美激情一区二区三区| www香蕉视频| 日韩美女在线观看| 亚洲国产精品综合久久久| 国产一线在线观看| 欧亚一区二区三区| 色婷婷在线播放| 美脚丝袜一区二区三区在线观看| 麻豆精品在线播放| av资源吧首页| 神马国产精品影院av| 国偷自产视频一区二区久| 国内自拍视频网| 亚洲一区二区在线免费看| 成人18在线| 国产精品一区二区三区四区五区| 日韩精品91亚洲二区在线观看|