このトピックでは、ユーザーベースのシングルサインオン (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」をご参照ください。
要素
説明
IssuerIssuer要素の値は、Alibaba Cloud 管理コンソールで IdP 用にアップロードするメタデータファイル内のEntityIDと一致する必要があります。SignatureSAML アサーションは署名されている必要があります。
Signature要素には、署名値や署名アルゴリズムなどの情報が含まれている必要があります。この署名は、署名が生成された後に署名済みの SAML アサーションが改ざんされていないことを確認するために使用されます。SubjectSubject要素には、以下のサブ要素が含まれている必要があります:NameIDサブ要素は 1 つのみで、お客様の Alibaba Cloud アカウント内の RAM ユーザーを識別するために使用されます。詳細については、この Topic の NameID の説明と例をご参照ください。SubjectConfirmation子要素は 1 つだけで、SubjectConfirmationData子要素を含んでいる必要があります。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>
ConditionsConditions要素には、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 は、RAM ユーザーを特定するためにユーザープリンシパル名 (UPN) を使用します。したがって、お客様の 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 の例
この例では、
Aliceという RAM ユーザーが Alibaba Cloud アカウント用に作成され、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になります。補助ドメイン名は使用できません。