このトピックでは、ユーザーベースのシングルサインオン (SSO) 用のSecurity Assertion Markup Language (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:Assertion>
</saml2p:Response>
SAMLアサーションの要素
SAMLの共通要素2.0
SAML 2.0の詳細については、「SAML 2.0」をご参照ください。
要素
説明
発行者
Issuer
要素の値は、Alibaba Cloud管理コンソールでIdPにアップロードしたメタデータファイルのEntityID
と一致する必要があります。署名
SAMLアサーションに署名する必要があります。
Signature
要素には、署名値や署名アルゴリズムなどの情報が含まれている必要があります。 署名は、署名されたSAMLアサーションが署名の生成後に変更されないことを確認するために使用されます。件名
Subject
要素には、次のサブ要素を含める必要があります。NameID
サブエレメントは1つだけです。 サブ要素は、Alibaba Cloudアカウント内のRAMユーザーを識別するために使用されます。 詳細については、このトピックのNameIDの説明と例を参照してください。SubjectConfirmationData
サブ要素を含むSubjectConfirmation
サブ要素は1つだけです。SubjectConfirmationData
サブ要素には、次の属性が含まれている必要があります。NotOnOrAfter
: SAMLアサーションの有効期間。受信者
: SAMLアサーションの受信者。 Alibaba Cloudは、この属性の値に基づいてSAMLアサーションの受信者をチェックします。 したがって、この属性を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
要素には、AudienceRestriction
サブ要素を含める必要があります。 AudienceRestrictionサブ要素には、1つ以上のAudience
サブ要素を含めることができます。Audience
サブ要素の値は、https://signin-intl.aliyun.com/${accountId}/saml/SSO
${accountId}
は、Alibaba CloudアカウントのIDを指定します。次のスクリプトは、
Conditions
要素の例を示しています。<Conditions> <AudienceRestriction> <Audience>https://signin-intl.aliyun.com/${accountId}/saml/SSO</Audience> </AudienceRestriction> </Conditions>
NameID要素
Alibaba Cloud はユーザープリンシパル名 (UPN) を使用して RAM ユーザーを見つけます。 したがって、IdPによって生成されるSAMLアサーションには、RAMユーザーのUPNが含まれている必要があります。 ユーザーベースSSOを実装するために、Alibaba CloudはSAMLアサーションの
NameID
要素を解決し、この要素を対応するRAMユーザーのUPNにマップします。IdPによって発行されるSAMLアサーションを設定する場合、RAMユーザーのUPNをSAMLアサーションの
NameID
要素にマップする必要があります。NameID
要素の値には、次のいずれかのサフィックスを含める必要があります。Alibaba Cloudアカウントのドメインエイリアス:
<username >@< domain_alias>
<username>
RAMユーザーのユーザー名を指定します。<domain_alias>
はドメインエイリアスを指定します。 ドメインエイリアスの設定方法の詳細については、「ドメインエイリアスの作成と検証」をご参照ください。補助ドメイン名:
<username >@< auxiliary_domain>
<username>
は、RAMユーザーのユーザー名を指定します。<auxiliary_domain>
は、補助ドメイン名を指定します。 補助ドメイン名の設定方法については、「ロールベースSSO用のAlibaba CloudのSAML設定の設定」をご参照ください。説明ドメインエイリアスと補助ドメイン名の両方を設定する場合、
NameID
要素の値にはドメインエイリアスが付いています。Alibaba Cloudアカウントのデフォルトドメイン名:
<username >@< default_domain>
<username>
RAMユーザーのユーザー名を指定します。<default_domain>
は、デフォルトのドメイン名を指定します。 デフォルトドメイン名を設定する方法の詳細については、「デフォルトドメイン名の表示と変更」をご参照ください。説明ドメインエイリアスまたは補助ドメイン名を設定している場合でも、Alibaba Cloudアカウントのデフォルトドメイン名を
NameID
要素のサフィックスとして使用できます。
NameIDの例
この例では、Alibaba Cloudアカウントに対して
Alice
という名前のRAMユーザーが作成され、Alibaba Cloudアカウントのデフォルトドメイン名がexample.onaliyun.com
されています。Alibaba Cloudアカウントのドメインエイリアスを
example.com
に設定した場合、SAMLアサーションのNameID
要素の値がAlice@example.onaliyun.com
またはAlice@example.com
されます。補助ドメイン名を
example.net
に設定し、ドメインエイリアスが設定されていない場合、SAMLアサーションのNameID
要素の値がAlice@example.onaliyun.com
またはAlice@example.net
されます。Alibaba Cloudアカウントのドメインエイリアスを
example.com
に設定し、補助ドメイン名をexample.net
に設定した場合、SAMLアサーションのNameID
要素の値がAlice@example.onaliyun.com
またはAlice@example.com
になります。 補助ドメイン名は使用できません。