ユーザーベース SSO の SAML 応答には、Alibaba Cloud がユーザー ID を検証するために、特定のアサーション要素を含める必要があります。
背景情報
SAML 2.0 ベースのシングルサインオン (SSO) フローでは、ユーザーが ID プロバイダー (IdP) にサインインすると、IdP は HTTP-POST バインディングを使用して SAML アサーションを含む認証応答を生成します。ブラウザまたはアプリケーションは、この応答を Alibaba Cloud に自動的に転送します。Alibaba Cloud は SAML アサーションを使用してユーザーの ID を検証します。アサーションには Alibaba Cloud が要求する要素が含まれている必要があります。そうでない場合、SSO は失敗します。
SAML 応答
ご利用の IdP は、以下の要件を満たす SAML 応答を Alibaba Cloud に送信する必要があります。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 仕様には、プロトコルの詳細がすべて記載されています。
要素
説明
IssuerIssuerの値は、Alibaba Cloud のユーザーベース SSO 設定でアップロードしたメタデータファイル内のEntityIDと一致する必要があります。SignatureSAML アサーションは、改ざんを防ぐために署名される必要があります。
Signature要素とその子要素には、署名値、署名アルゴリズム、および関連情報を含める必要があります。SubjectSubject要素には、次の要素を含める必要があります。-
Alibaba Cloud アカウント内の RAM ユーザーを識別する
NameID要素が 1 つだけ必要です。以下の「NameID 要素」と「NameID の例」セクションで、フォーマット要件について説明します。 -
SubjectConfirmation要素が 1 つだけ必要で、これにはSubjectConfirmationData要素が含まれている必要があります。SubjectConfirmationData要素には、次の属性が必要です。-
NotOnOrAfter:SAML アサーションの有効期間。 -
Recipient:Alibaba Cloud はこの値をチェックして、意図された受信者であることを検証します。値は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要素には、1 つ以上のAudience要素を持つAudienceRestriction要素を含める必要があります。少なくとも 1 つの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 ユーザーを特定します。ユーザーベース SSO を有効にするには、ご利用の IdP からの SAML アサーションの
NameID要素にユーザーの UPN を含める必要があります。ご利用の IdP で、RAM ユーザーの UPN に対応するフィールドを
NameID要素にマップします。NameIDの値は、次のいずれかのフォーマットを使用する必要があります。-
NameID要素のサフィックスとして、ドメインエイリアス を<username>@<domain_alias>の形式で使用します。 この形式では、<username>は RAM ユーザーのユーザー名であり、<domain_alias>はカスタムログインサフィックスです。 カスタムログインサフィックスの作成と検証。 -
補助ドメイン名 を
NameID要素の接尾辞として、<username>@<auxiliary_domain>形式で使用します。 この形式では、<username>は RAM ユーザーのユーザー名で、<auxiliary_domain>は補助ログインサフィックスです。 ユーザーベース SSO 用に Alibaba Cloud SP の SAML を設定する。説明ドメインエイリアスと補助ドメインの両方を設定した場合、補助ドメインは無視されます。この場合、
NameID要素にはドメインエイリアスのみを使用できます。 -
NameID要素のサフィックスとして デフォルトドメイン を使用します。フォーマットは<username>@<default_domain>です。ここで、<username>は RAM ユーザーのユーザー名、<default_domain>はデフォルトのログインサフィックスです。RAM ユーザーのログイン用ドメイン名を管理する。説明カスタムまたは補助ログインサフィックスを設定した場合でも、デフォルトログインサフィックスは
NameIDに対して有効なままです。
-
-
NameID の例
RAM ユーザー名は
Aliceで、デフォルトのログインサフィックスはexample.onaliyun.comです。-
カスタムログインサフィックスが
example.comに設定されている場合、NameIDの値はAlice@example.onaliyun.comまたはAlice@example.comです。 -
カスタムログインサフィックスが設定されておらず、補助ログインサフィックスが
example.netに設定されている場合、NameIDの値はAlice@example.onaliyun.comまたはAlice@example.netになります。 -
カスタムログインサフィックスを
example.comに設定し、その後で補助ログインサフィックスをexample.netに設定した場合、NameIDの値はAlice@example.onaliyun.comまたはAlice@example.comです。この場合、補助ログインサフィックスは有効になりません。
-