すべてのプロダクト
Search
ドキュメントセンター

Resource Access Management:ロールベースSSOのSAMLレスポンス

最終更新日:Oct 31, 2024

このトピックでは、ロールベースのシングルサインオン (SSO) のセキュリティアサーションマークアップ言語 (SAML) 応答の構文について説明します。 このトピックでは、SAMLレスポンスのSAMLアサーションの要素についても説明します。

背景情報

SAML 2.0ベースのSSOでは、ユーザーのIDが検証された後、IDプロバイダー (IdP) が認証応答を生成し、ブラウザーまたはプログラムを使用してこの応答をAlibaba Cloudに送信します。 このレスポンスには、SAML 2.0のHTTP POSTバインディングの仕様に準拠したSAMLアサーションが含まれています。 Alibaba Cloud は、SAML アサーションを使用して、ユーザーのログインステータスと ID を判断します。 したがって、SAMLアサーションには、Alibaba Cloudが必要とする要素が含まれている必要があります。 SAMLアサーションに必要な要素が含まれていない場合、SSOは失敗します。

SAMLレスポンス

IdPからAlibaba Cloudに送信される各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:AttributeStatement>
            <saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName">
                ...
            </saml2:Attribute>
            <saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role">
                ...
            </saml2:Attribute>
        </saml2:AttributeStatement>
    </saml2:Assertion>
</saml2p:Response>

SAMLアサーションの要素

  • SAMLの共通要素2.0

    SAML 2.0の詳細については、「SAML 2.0」をご参照ください。

    要素

    説明

    発行者

    Issuer要素の値は、Alibaba Cloud管理コンソールでIdPにアップロードしたメタデータファイルのEntityIDと一致する必要があります。

    署名

    SAMLアサーションに署名する必要があります。 Signature要素には、署名値や署名アルゴリズムなどの情報が含まれている必要があります。 署名は、署名されたSAMLアサーションが署名の生成後に変更されないことを検証するために使用されます。

    件名

    Subject要素には、次のサブ要素を含める必要があります。

    • NameIDサブエレメントは1つだけです。 SAML 2.0に基づいてNameIDの値を指定する必要があります。 ただし、Alibaba CloudはNameIDの値に基づいてログオンIDを決定しません。

    • SubjectConfirmationDataサブ要素を含むSubjectConfirmationサブ要素は1つだけです。 SubjectConfirmationDataサブ要素には、次の属性が含まれている必要があります。

      • NotOnOrAfter: SAMLアサーションの有効期間。

      • 受信者: SAMLアサーションの受信者。 Alibaba Cloudは、この属性の値に基づいてSAMLアサーションの受信者をチェックします。 したがって、この属性を https://signin.alibabacloud.com/saml-role/sso .

      次のスクリプトは、Subject要素の例を示しています。

      <Subject>
        <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">administrator</NameID>        
        <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">   
          <SubjectConfirmationData NotOnOrAfter="2019-01-01T00:01:00.000Z" Recipient="https://signin.alibabacloud.com/saml-role/sso"/>    
        </SubjectConfirmation>
      </Subject>

    条件

    Conditions要素には、AudienceRestrictionサブ要素を含める必要があります。 AudienceRestrictionサブ要素には、1つ以上のAudienceサブ要素を含めることができます。 Audienceサブ要素の値は、 urn:alibaba:cloudcomputing:international

    次のスクリプトは、Conditions要素の例を示しています。

    <Conditions>
      <AudienceRestriction>
        <Audience>urn:alibaba:cloudcomputing:international</Audience>
      </AudienceRestriction>
    </Conditions>           
  • Alibaba Cloudに必要なカスタム要素

    Alibaba Cloudでは、SAMLアサーションのAttributeStatement要素に次のAttributeサブ要素が含まれている必要があります。

    • Role属性: Name属性が https://www.aliyun.com/SAML-Role/Attributes/Role に設定されたattribute要素。

      このサブ要素は必須であり、1つ以上のAttributeValueサブ要素を含みます。 AttributeValueは、IdPのユーザーが引き受けることができるロールをリストします。 AttributeValueサブ要素の値は、ロールのAlibaba Cloud Resource Name (ARN) とIdPのARNのコンマ区切りのペアです。 ロールのARNとIdPのARNはRAMコンソールで確認できます。

      • ロールのARNを表示するには、[ロール] ページに移動し、RAMロールの名前をクリックします。 表示されるページで、[基本情報] セクションでロールのARNを表示できます。

      • IdPのARNを表示するには、SSOページに移動します。 [ロールベースSSO] タブで、IdPの名前をクリックします。 [IdP情報] セクションで、IdPのARNを確認できます。

      説明

      ロール属性に複数のAttributeValueサブ要素が含まれている場合、ユーザーはAlibaba Cloud管理コンソールにログインするときに引き受けるロールを選択する必要があります。

      次のスクリプトは、Role属性の例を示しています。

      <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role">      
        <AttributeValue>acs:ram::$account_id:role/role1,acs:ram::$account_id:saml-provider/provider1</AttributeValue>
        <AttributeValue>acs:ram::$account_id:role/role2,acs:ram::$account_id:saml-provider/provider1</AttributeValue>
      </Attribute>               
      説明

      $account_idの値は、RAMロールとIdPを定義するAlibaba Cloudアカウントのidです。

    • Role属性: Name属性が https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName に設定されたattribute要素。

      このサブ要素は必須であり、RAMコンソールおよびActionTrailログに表示するユーザー情報を指定するAttributeValueサブ要素が1つだけ含まれています。 複数のユーザーが同じロールを引き受けるようにする場合は、ユーザーのRoleSessionName属性に異なる値を指定します。 各値は、ユーザを一意に識別します。 たとえば、値を従業員IDまたはメールアドレスに設定できます。

      AttributeValueサブ要素の値は、長さが2 ~ 64文字である必要があり、英数字、および次の特殊文字 (- _) のみを使用できます。 @ =

      次のスクリプトは、RoleSessionName属性の例を示しています。

      <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName">
        <AttributeValue>user_id</AttributeValue>
      </Attribute>                     
    • SessionDuration属性: Name属性が https://www.aliyun.com/SAML-Role/Attributes/SessionDuration に設定されたattributeサブ要素。

      この要素はオプションで、各セッションの最大期間を指定するAttributeValueサブ要素が1つだけ含まれています。 このサブ要素の値は秒単位の整数です。 この値は、Role属性に指定された最大セッション期間を超えることはできません。 最小値は900秒です。

      次のスクリプトは、SessionDuration属性の例を示しています。

      <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/SessionDuration">
        <AttributeValue>1800</AttributeValue>
      </Attribute>                  
  • ロールセッションの最大期間

    コンソールを使用してロールを引き受ける場合、ロールの最大セッション期間は、SAMLアサーションで指定されているSessionDuration属性の値になります。 AuthnStatement要素のSessionNotOnOrAfter属性も指定されている場合、最大セッション期間はSessionDurationSessionNotOnOrAfterの間の小さい値になります。 SessionDurationもSessionNotOnOrAfterも指定されていない場合、最大セッション期間は、ロールのmaximum session durationパラメーターとLogon Session Valid Forパラメーターの間の小さい値になります。 詳細については、「RAMユーザーのセキュリティ設定の管理」および「RAMロールの最大セッション期間の指定」をご参照ください。

    AssumeRoleWithSAML操作を呼び出し、AuthnStatement要素にSessionNotOnOrAfter属性を定義したときにDurationSecondsパラメーターを指定した場合、最大セッション期間はDurationSecondsSessionNotOnOrAfterの間の小さい値になります。 詳細については、「AssumeRoleWithSAML」をご参照ください。 SessionDurationもSessionNotOnOrAfterも指定されていない場合、最大セッション期間はデフォルトで3,600秒です。

関連ドキュメント

Google ChromeでSAMLレスポンスを表示するにはどうすればよいですか?