IAM Identity Center において外部 ID プロバイダーの Microsoft Entra ID を選択し SAML 認証がどのように機能するかまとめ
■構築手順の概要 (※1)
- Microsoft Entra ID で AWS IAM Identity Center のエンタープライズアプリケーション、ユーザーを作成
- IAM Identity Cente で許可セットや 1. で作成したユーザーに対応するユーザーを作成、許可セットをユーザーへ割り当て
- Microsoft Entra ID の AWS IAM Identity Center エンタープライズアプリケーションと IAM アイデンティティセンターの外部 IdP 設定を使用して SAML 接続を設定
- SCIM v2.0 プロトコルを使用して Microsoft Entra ID から IAM アイデンティティセンターへのユーザー情報の自動プロビジョニング (同期) を設定 ※3
重要 : ユーザー作成時、プロパティで [名]、[姓] に適当な値を入力する必要があります。無いと自動プロビジョニングを実行する時に失敗します。※2
ドキュメントはこちら
※1 Microsoft Entra ID および IAM アイデンティティセンターによる SAML と SCIM の設定
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/idp-microsoft-entra.html
※2 自動プロビジョニングを使用する際の注意事項
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/provision-automatically.html#auto-provisioning-considerations
※3 Microsoft Entra ID および IAM アイデンティティセンターによる SAML と SCIM の設定
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/other-idps.html
IAM Identity Center - Microsoft Entra ID の SAML認証リクエストの中身
■SAML リクエスト
SamlRequest.xml
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" AssertionConsumerServiceURL="https://ap-northeast-1.signin.aws.amazon.com/platform/saml/acs/xxxxxxxxxxxxxxxxxx" Destination="https://login.microsoftonline.com/xxxxxxxxxxxxx/saml2" ID="aws_xxxxxxxxxxxx" IssueInstant="yyyy-mm-ddT11:11:11.111Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">https://ap-northeast-1.signin.aws.amazon.com/platform/saml/[ID ストア ID]</saml2:Issuer>
<saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
</saml2p:AuthnRequest>
■SAML レスポンス例
SamlResponse.xml
<samlp:Response ID="xxxxxxxxxxxxxxxxxxxxxxx" Version="2.0" IssueInstant="yyyy-mm-ddT11:11:11.111" Destination="https://ap-northeast-1.signin.aws.amazon.com/platform/saml/acs/xxxxxxxxxxxxxxxxxxxxxxx" InResponseTo="aws_xxxxxxxxxxxxxxxxxxxxxxx" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://sts.windows.net/8dc60039-d6d8-45a2-9eee-d625d864f53a/</Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<Assertion ID="_xxxxxxxxxxxxxxxxxxxxxxx" IssueInstant="yyyy-mm-ddT11:11:11.111Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>https://sts.windows.net/xxxxxxxxxxxxxxxxxxxxxxxa/</Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<Reference URI="#_xxxxxxxxxxxxxxxxxxxxxxx">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<DigestValue>xxxxxxxxxxxxxxxxxxxxxxx</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>xxxxxxxxxxxxxxxxxxxxxxxx</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>xxxxxxxxxxxxxxxxxxxxxxx</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">meisei@hogehoge.onmicrosoft.com</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="aws_xxxxxxxxxxxxxxxx" NotOnOrAfter="yyyy-mm-ddT22:22:22.222" Recipient="https://ap-northeast-1.signin.aws.amazon.com/platform/saml/acs/xxxxxxxxxxxxxxxxxx" />
</SubjectConfirmation>
</Subject>
<Conditions NotBefore="yyyy-mm-ddT11:11:11.111Z" NotOnOrAfter="yyyy-mm-ddT22:22:22.222Z">
<AudienceRestriction>
<Audience>https://ap-northeast-1.signin.aws.amazon.com/platform/saml/d[ID ストア ID]</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid">
<AttributeValue>xxxxxxxxxxxxx</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>xxxxxxxxxxxxxxxxxxxxxxx</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
<AttributeValue>meisei</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/identityprovider">
<AttributeValue>https://sts.windows.net/8dc60039-d6d8-45a2-9eee-d625d864f53a/</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/claims/authnmethodsreferences">
<AttributeValue>http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname">
<AttributeValue>mei</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<AttributeValue>sei</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>meisei@hogehoge.onmicrosoft.com</AttributeValue>
</Attribute>
</AttributeStatement>
<AuthnStatement AuthnInstant="yyyy-mm-ddT11:11:11.111Z" SessionIndex="_xxxxxxxxxxx0">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</samlp:Response>