このトピックでは、ユーザーベースのシングルサインオン (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になります。 補助ドメイン名は使用できません。