全部產品
Search
文件中心

Resource Access Management:使用者SSO的SAML響應

更新時間:Feb 22, 2024

本文為您介紹進行使用者SSO時SAML響應中必須包含的元素,尤其是SAML斷言中的元素。

背景資訊

在基於SAML 2.0的SSO流程中,當企業使用者在IdP登入後,IdP將根據SAML 2.0 HTTP-POST綁定的要求產生包含SAML斷言的認證響應,並由瀏覽器(或程式)自動轉寄給阿里雲。這個SAML斷言會被用來確認使用者登入狀態並從中解析出登入的主體。因此,斷言中必須包含阿里雲要求的元素,否則登入使用者的身份將無法被確認,導致SSO失敗。

SAML響應

請確保您的IdP向阿里雲發出符合如下要求的SAML響應,每一個元素都必須要有,否則SSO將會失敗。

<saml2p:Response>
    <saml2:Issuer>...</saml2:Issuer>
    <saml2p:Status>
        ...
    </saml2p:Status>
    <saml2:Assertion>
        <saml2:Issuer>...</saml2:Issuer>
        <ds:Signature>
            ...
        </ds:Signature>
        <saml2:Subject>
            <saml2:NameID>${NameID}</saml2:NameID>
            <saml2:SubjectConfirmation>
                ...
            </saml2:SubjectConfirmation>
        </saml2:Subject>
        <saml2:Conditions>
            <saml2:AudienceRestriction>
                <saml2:Audience>${Audience}</saml2:Audience>
            </saml2:AudienceRestriction>
        </saml2:Conditions>
        <saml2:AuthnStatement>
            ...
        </saml2:AuthnStatement>
    </saml2:Assertion>
</saml2p:Response>

SAML斷言中的元素說明

  • SAML 2.0協議的通用元素

    關於SAML 2.0協議的更多內容,請參見SAML 2.0

    元素

    說明

    Issuer

    Issuer的值必須與您在阿里雲使用者SSO設定中上傳的中繼資料檔案中的EntityID匹配。

    Signature

    阿里雲要求SAML斷言必須被簽名以確保沒有篡改,Signature及其包含的元素必須包含簽名值、簽名演算法等資訊。

    Subject

    Subject必須包含以下元素:

    • 有且僅有一個NameID元素,是阿里雲帳號下的某個RAM使用者的身份標識。詳情請參見本文下面所述的NameID元素和NameID樣本。

    • 有且僅有一個SubjectConfirmation元素,其中包含一個SubjectConfirmationData元素。SubjectConfirmationData必須有以下兩個屬性:

      • NotOnOrAfter:規定SAML斷言的有效期間。

      • Recipient:阿里雲通過檢查該元素的值來確保阿里雲是該斷言的目標接收方,其取值必須為https://signin-intl.aliyun.com/saml/SSO

      以下是一個Subject元素的樣本:

      <Subject>
        <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">Alice@example.onaliyun.com</NameID>        
        <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">   
          <SubjectConfirmationData NotOnOrAfter="2019-01-01T00:01:00.000Z" Recipient="https://signin-intl.aliyun.com/saml/SSO"/>    
        </SubjectConfirmation>
      </Subject>

    Conditions

    Conditions元素中,必須包含一個AudienceRestriction元素,其中可包含一至多個Audience元素,但必須有一個Audience元素的取值為 https://signin-intl.aliyun.com/${accountId}/saml/SSO${accountId}為阿里雲帳號ID。

    以下是一個Conditions元素的樣本:

    <Conditions>
      <AudienceRestriction>
        <Audience>https://signin-intl.aliyun.com/${accountId}/saml/SSO</Audience>
      </AudienceRestriction>
    </Conditions>           
  • NameID元素

    阿里雲需要通過UPN(User Principal Name)來定位一個RAM使用者,所以要求企業IdP產生的SAML斷言包含使用者的UPN。阿里雲通過解析SAML斷言中的NameID元素,來匹配RAM使用者的UPN從而實現使用者SSO。

    因此,在配置IdP頒發的SAML斷言時,需要將對應於RAM使用者UPN的欄位對應為SAML斷言中的NameID元素。

    NameID元素必須是以下幾種:

    • 使用域別名作為NameID元素的尾碼,即<username>@<domain_alias>。其中<username>為RAM使用者的使用者名稱,<domain_alias>為域別名。關於如何設定域別名,請參見建立並驗證域別名

    • 使用輔助網域名稱作為NameID元素的尾碼,即<username>@<auxiliary_domain>。其中<username>為RAM使用者的使用者名稱,<auxiliary_domain> 為輔助網域名稱。關於如何設定輔助網域名稱,請參見進行使用者SSO時阿里雲SP的SAML配置

      說明

      如果您同時設定了域別名和輔助網域名稱,輔助網域名稱將不會生效。此時,NameID元素只能使用域別名作為尾碼。

    • 使用預設網域名稱作為NameID元素的尾碼,即<username>@<default_domain>。其中<username>為RAM使用者的使用者名稱,<default_domain>為預設網域名稱。關於如何設定預設網域名稱,請參見查看和修改預設網域名稱

      說明

      即使設定了域別名或輔助網域名稱,仍可以使用預設網域名稱作為NameID的尾碼。

  • NameID樣本

    RAM使用者名稱為Alice,預設網域名稱為example.onaliyun.com

    • 如果設定了域別名為example.com,SAML斷言中的NameID取值為Alice@example.onaliyun.comAlice@example.com

    • 如果沒有設定域別名,設定了輔助網域名稱為example.net,SAML斷言中的NameID取值為Alice@example.onaliyun.comAlice@example.net

    • 如果設定了域別名為example.com後,又設定了輔助網域名稱為example.net,SAML斷言中的NameID取值為Alice@example.onaliyun.comAlice@example.com。注意此時輔助網域名稱不生效。

相關文檔

如何在瀏覽器中查看SAML響應?