重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
この記事では、Security Assertion Markup Language (SAML) アプリケーション (サービス プロバイダー) を Azure Active Directory B2C (Azure AD B2C) に接続して認証を行う方法について説明します。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
この機能は、カスタム ポリシーでのみ使用できます。 セットアップ手順については、前のセレクターで [カスタム ポリシー] を選択します。
概要
Azure AD B2C を顧客 ID およびアクセス管理ソリューションとして使用する組織では、SAML プロトコルを使用して認証するアプリケーションとの統合が必要になる場合があります。 次の図は、Azure AD B2C が ID プロバイダー (IdP) として機能し、SAML ベースのアプリケーションでシングル サインオン (SSO) を実現する方法を示しています。
- アプリケーションは、Azure AD B2C の SAML サインイン エンドポイントに送信される SAML AuthN 要求を作成します。
- ユーザーは、Azure AD B2C ローカル アカウントまたはその他のフェデレーション ID プロバイダー (構成されている場合) を使用して認証できます。
- ユーザーがフェデレーション ID プロバイダーを使用してサインインすると、トークン応答が Azure AD B2C に送信されます。
- Azure AD B2C は SAML アサーションを生成し、アプリケーションに送信します。
このビデオでは、SAML アプリケーションを Azure AD B2C と統合する方法について説明しています。
[前提条件]
この記事のシナリオでは、次のものが必要です。
- カスタム ポリシー スターター パックからの SocialAndLocalAccounts カスタム ポリシー。 「Azure AD B2C でカスタム ポリシーの概要に着手する」内の手順を完了してください。
- SAML プロトコルに関する基本的な理解と、アプリケーションの SAML 実装に関する知識。
- SAML アプリケーションとして設定された Web アプリケーション。 SAML AuthN 要求を送信し、Azure AD B2C から SAML 応答を受信、デコード、検証する機能が必要です。 SAML アプリケーションは、証明書利用者アプリケーションまたはサービス・プロバイダーとも呼ばれます。
- SAML アプリケーションの公開されている SAML メタデータエンドポイント または XML ドキュメント。
- Azure AD B2C テナント。
SAML アプリケーションと関連するメタデータエンドポイントがまだない場合は、テスト用に用意された SAML テストアプリケーション を使用できます。
重要
エンドポイントは、Azure AD B2C のセキュリティ要件に準拠している必要があります。 古い TLS バージョンと暗号は非推奨です。 詳細については、 Azure AD B2C TLS と暗号スイートの要件に関するページを参照してください。
証明書を設定する
アプリケーションと Azure AD B2C の間に信頼関係を構築するには、両方のサービスが互いの署名を作成および検証できる必要があります。 X509 証明書をアプリケーションと Azure AD B2C で構成します。
アプリケーション証明書
使用方法 | 必須 | 説明 |
---|---|---|
SAML 要求の署名 | いいえ | Web アプリに格納されている秘密キーを含む証明書。 アプリケーションでは、証明書を使用して Azure AD B2C に送信された SAML 要求に署名します。 Web アプリは、SAML メタデータ エンドポイントを通じて公開キーを公開する必要があります。 Azure AD B2C は、アプリケーション メタデータの公開キーを使用して SAML 要求の署名を検証します。 |
SAML アサーションの暗号化 | いいえ | Web アプリに格納されている秘密キーを含む証明書。 Web アプリは、SAML メタデータ エンドポイントを通じて公開キーを公開する必要があります。 Azure AD B2C では、公開キーを使用してアプリケーションへのアサーションを暗号化できます。 アプリケーションは、秘密鍵を使用してアサーションを復号化します。 |
Azure AD B2C 証明書
使用方法 | 必須 | 説明 |
---|---|---|
SAML 応答の署名 | イエス | Azure AD B2C に格納されている秘密キーを持つ証明書。 Azure AD B2C では、この証明書を使用して、アプリケーションに送信される SAML 応答に署名します。 アプリケーションは、Azure AD B2C のメタデータ公開キーを読み取り、SAML 応答の署名を検証します。 |
SAML アサーション署名 | イエス | Azure AD B2C に格納されている秘密キーを持つ証明書。 Azure AD B2C では、この証明書を使用して SAML 応答の <saml:Assertion> 部分に署名します。 |
本番環境では、パブリック認証局が発行した証明書を使用することをお勧めします。 ただし、この手順は自己署名証明書を使用して完了することもできます。
ポリシー キーを作成する
アプリケーションと Azure AD B2C との間に信頼関係を持つには、SAML 応答の署名証明書を作成します。 Azure AD B2C では、この証明書を使用して、アプリケーションに送信される SAML 応答に署名します。 アプリケーションは、Azure AD B2C のメタデータ公開キーを読み取り、SAML 応答の署名を検証します。
ヒント
このポリシーキーは、 SAML アサーションの署名など、他の目的に使用できます。
証明書を取得する
証明書をまだ持っていない場合は、自己署名証明書を使用できます。 自己署名証明書は、証明機関 (CA) によって署名されていないセキュリティ証明書であり、CA によって署名された証明書のセキュリティ保証を提供するものではありません。
Windows では、PowerShell の New-SelfSignedCertificate コマンドレットを使用して証明書を生成します。
この PowerShell コマンドを実行して、自己署名証明書を生成します。
-Subject
などのアプリケーションと Azure AD B2C のテナント名に合わせてcontosowebapp.contoso.onmicrosoft.com
引数を変更します。 また、証明書に別の有効期限を指定するように-NotAfter
日付を調整することもできます。New-SelfSignedCertificate ` -KeyExportPolicy Exportable ` -Subject "CN=yourappname.yourtenant.onmicrosoft.com" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyUsage DigitalSignature ` -NotAfter (Get-Date).AddMonths(12) ` -CertStoreLocation "Cert:\CurrentUser\My"
Windows コンピューターで、[ユーザー証明書の管理] を検索して選択します
[ 証明書 - 現在のユーザー] で、[ 個人用>Certificates>yourappname.yourtenant.onmicrosoft.com を選択します。
証明書を選択し、 アクション>すべてのタスク>Export を選択します。
[次へ>次へ] を選択し、秘密キーをエクスポートします>次へ。
[ ファイル形式のエクスポート] の既定値をそのまま使用し、[ 次へ] を選択します。
[パスワード] オプションを有効にし、証明書のパスワードを入力して、[次へ] を選択します。
証明書を保存する場所を指定するには、[ 参照 ] を選択し、任意のディレクトリに移動します。
[ 名前を付けて保存 ] ウィンドウで、 ファイル名を入力し、[保存] を選択 します。
[ 次へ>完了] を選択します。
Azure AD B2C で .pfx ファイルのパスワードを受け入れるには、Windows 証明書ストアのエクスポート ユーティリティで、AES256-SHA256 ではなく、TripleDES-SHA1 オプションを使用してパスワードを暗号化する必要があります。
証明書をアップロードする
証明書を Azure AD B2C テナントに格納する必要があります。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [ すべてのサービス ] を選択し、 [Azure AD B2C] を検索して選択します。
- [概要] ページで、[Identity Experience Framework] を選択します。
- [ポリシー キー] を選択してから、[追加] を選択します。
- [オプション] で [アップロード] を選択します。
- [ 名前] に、ポリシーキーの名前を入力します。 たとえば、「 SamlIdpCert」と入力します。 プレフィックス B2C_1A_ は、キーの名前に自動的に追加されます。
- 秘密キーを持つ証明書 .pfx ファイルを参照して選択します。
- を選択してを作成します。
ポリシーを有効にして SAML アプリケーションと接続する
SAML アプリケーションに接続するには、Azure AD B2C で SAML 応答を作成できる必要があります。
カスタム ポリシー スターター パックで SocialAndLocalAccounts\TrustFrameworkExtensions.xml を開きます。
<ClaimsProviders>
セクションを見つけて、次のXMLスニペットを追加して、SAMLレスポンスジェネレータを実装します。
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<!-- SAML Token Issuer technical profile -->
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
<Metadata>
<Item Key="IssuerUri">https://issuerUriMyAppExpects</Item>
</Metadata>
<CryptographicKeys>
<Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_SamlIdpCert"/>
<Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SamlIdpCert"/>
</CryptographicKeys>
<InputClaims/>
<OutputClaims/>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer"/>
</TechnicalProfile>
<!-- Session management technical profile for SAML-based tokens -->
<TechnicalProfile Id="SM-Saml-issuer">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
SAML 応答の発行者 URI を構成する
IssuerUri
メタデータ項目の値は、SAML トークン発行者技術プロファイルで変更できます。 この変更は、Azure AD B2C からの SAML 応答で返される issuerUri
属性に反映されます。 SAML レスポンスの検証中に同じ IssuerUri
値を受け入れるようにアプリケーションを設定します。
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<!-- SAML Token Issuer technical profile -->
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
<Metadata>
<Item Key="IssuerUri">https://issuerUriMyAppExpects</Item>
</Metadata>
...
</TechnicalProfile>
SAML レスポンスを発行するようにポリシーを設定する
ポリシーで SAML レスポンスを作成できるようになったので、アプリケーションに対するデフォルトの JWT レスポンスではなく SAML レスポンスを発行するようにポリシーを設定する必要があります。
SAML 用に構成されたサインアップまたはサインイン ポリシーを作成する
スターター パックの作業ディレクトリに SignUpOrSignin.xml ファイルのコピーを作成し、新しい名前で保存します。 この記事では 、例としてSignUpOrSigninSAML.xml を使用します。 このファイルは、依存先のポリシー ファイルです。 デフォルトでは、JWTレスポンスを発行するように設定されています。
任意のエディターで SignUpOrSigninSAML.xml ファイルを開きます。
次の値を変更します。
PolicyId
からB2C_1A_signup_signin_saml
へPublicPolicyUri
からhttp://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml
。 Azure AD B2C テナントのドメイン名のサブドメインで<tenant-name>
プレースホルダーを置き換えます。 たとえば、テナントのプライマリ ドメインがcontoso.onmicrosoft.com
の場合は、contoso
を使用します。 テナント名がない場合は、 テナントの詳細の読み方をご確認ください。
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="<tenant-name>.onmicrosoft.com" PolicyId="B2C_1A_signup_signin_saml" PublicPolicyUri="http://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml">
ユーザー体験の最後に、Azure AD B2C には
SendClaims
ステップが含まれます。 この手順では、トークン発行者の技術プロファイルを参照します。 デフォルトの JWT 応答ではなく SAML 応答を発行するには、新しい SAML トークン発行者技術プロファイルSendClaims
を参照するようにSaml2AssertionIssuer
ステップを変更します。
次の XML スニペットを <RelyingParty>
要素の直前に追加します。 この XML は、 SignUpOrSignIn ユーザー体験のオーケストレーション手順 7 を上書きします。
スターター パック内の別のフォルダーから開始した場合、またはオーケストレーション ステップを追加または削除してユーザー体験をカスタマイズした場合は、 order
要素の番号が、トークン発行者ステップのユーザー体験で指定された番号に対応していることを確認します。 たとえば、他のスターターパックフォルダでは、対応するステップ番号は LocalAccounts
が4、 SocialAccounts
が6、 SocialAndLocalAccountsWithMfa
が9です。
<UserJourneys>
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="Saml2AssertionIssuer"/>
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
証明書利用者要素は、アプリケーションが使用するプロトコルを決定します。 既定値は OpenId
です。
Protocol
エレメントを SAML
に変更する必要があります。 出力要求により、SAML アサーションに対する要求のマッピングが作成されます。
<TechnicalProfile>
要素内の <RelyingParty>
要素全体を、次の技術プロファイル XML で置き換えます。
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
</OutputClaims>
<SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
</TechnicalProfile>
証明書利用者の最終的なポリシー ファイルは、次の XML コードのようになります。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
PolicySchemaVersion="0.3.0.0"
TenantId="contoso.onmicrosoft.com"
PolicyId="B2C_1A_signup_signin_saml"
PublicPolicyUri="http://contoso.onmicrosoft.com/B2C_1A_signup_signin_saml">
<BasePolicy>
<TenantId>contoso.onmicrosoft.com</TenantId>
<PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
</BasePolicy>
<UserJourneys>
<UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>
<OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="Saml2AssertionIssuer"/>
</OrchestrationSteps>
</UserJourney>
</UserJourneys>
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
</OutputClaims>
<SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
注
これと同じプロセスに従って、他の種類のユーザー フロー (サインイン、パスワードのリセット、プロファイル編集フローなど) を実装できます。
ポリシーをアップロードする
変更を保存し、新しい TrustFrameworkExtensions.xml と SignUpOrSigninSAML.xml ポリシー ファイルを Azure portal にアップロードします。
Azure AD B2C IdP SAML メタデータをテストする
ポリシー ファイルがアップロードされると、Azure AD B2C は構成情報を使用して、アプリケーションが使用する ID プロバイダーの SAML メタデータ ドキュメントを生成します。 SAML メタデータドキュメントには、サインイン方法、サインアウト方法、証明書などのサービスの場所が含まれています。
Azure AD B2C ポリシーのメタデータは、次の URL から入手できます。
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/samlp/metadata
<tenant-name>
を Azure AD B2C テナントの名前に置き換えます。
<policy-name>
をポリシーの名前 (ID) に置き換えます。 次に例を示します。
https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_signup_signin_saml/samlp/metadata
Azure AD B2C に SAML アプリケーションを登録する
Azure AD B2C がアプリケーションを信頼するようにするには、Azure AD B2C アプリケーション登録を作成します。 登録には、アプリケーションのメタデータエンドポイントなどの設定情報が含まれます。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- 左側のメニューで、 [Azure AD B2C] を選択します。 または、 [ すべてのサービス ] を選択し、 [Azure AD B2C] を検索して選択します。
- [アプリの登録] を選択し、[新しい登録] を選択します。
- アプリケーションの名前を入力します。 たとえば、「 SAMLApp1」と入力します。
- [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
-
[リダイレクト URI] で [Web] を選択し、「
https://localhost
」と入力します。 この値は、アプリケーションの登録マニフェストの後半で変更します。 - 登録 を選択します。
Azure AD B2C でアプリケーションを構成する
SAML アプリの場合、アプリケーション登録のマニフェストでいくつかのプロパティを構成する必要があります。
- Azure portal で、前のセクションで作成したアプリケーションの登録に移動します。
- [管理] で [マニフェスト] を選択してマニフェスト エディターを開きます。 次に、次のセクションで説明するプロパティを変更します。
識別子を追加する
SAML アプリケーションが Azure AD B2C に要求を行うと、SAML AuthN 要求には Issuer
属性が含まれます。 この属性の値は、通常、アプリケーションのメタデータ entityID
値と同じです。 Azure AD B2C では、この値を使用して、ディレクトリ内のアプリケーションの登録を検索し、構成を読み取ります。 この検索を成功させるには、アプリケーション登録の identifierUri
に Issuer
属性に一致する値を設定する必要があります。
登録マニフェストで、 identifierURIs
パラメータを見つけて、適切な値を追加します。 この値は、アプリケーションでの EntityId
に対する SAML AuthN 要求で構成されている値と同じ値であり、アプリケーションのメタデータの entityID
値になります。 また、 accessTokenAcceptedVersion
パラメーターを見つけて、値を 2
に設定する必要があります。
重要
accessTokenAcceptedVersion
を 2
に更新しないと、確認済みのドメインを必要とするエラー メッセージが表示されます。
次の例は、SAML メタデータの entityID
値を示しています。
<EntityDescriptor ID="id123456789" entityID="https://samltestapp2.azurewebsites.net" validUntil="2099-12-31T23:59:59Z" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
"identifierUris":"https://tenant-name.onmicrosoft.com/app-name",
アプリケーションのメタデータを Azure AD B2C と共有する
アプリケーションの登録がその identifierUri
値によって読み込まれた後、Azure AD B2C はアプリケーションのメタデータを使用して SAML AuthN 要求を検証し、応答方法を決定します。
アプリケーションでは、パブリックにアクセス可能なメタデータエンドポイントを公開することをお勧めします。
SAML メタデータ URL とアプリケーション登録のマニフェスト の両方で 指定されているプロパティがある場合、それらは マージされます。 メタデータ URL で指定されたプロパティが最初に処理され、優先されます。
SAML テストアプリケーションを例にとると、アプリケーションマニフェストの [ samlMetadataUrl
] に次の値を使用します。
"samlMetadataUrl":"https://samltestapp2.azurewebsites.net/Metadata",
アサーション コンシューマーの URL をオーバーライドまたは設定する (省略可能)
Azure AD B2C が SAML 応答を送信する応答 URL を構成できます。 応答 URL は、アプリケーション マニフェストで構成できます。 この構成は、アプリケーションがパブリックにアクセス可能なメタデータ エンドポイントを公開しない場合に便利です。
SAML アプリケーションの応答 URL は、アプリケーションが SAML 応答を受信すると想定するエンドポイントです。 通常、アプリケーションは、次の例に示すように、この URL を Location
要素の AssertionConsumerService
属性としてメタデータ ドキュメントで提供します。
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
...
<AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://samltestapp2.azurewebsites.net/SP/AssertionConsumer" />
</SPSSODescriptor>
アプリケーションのメタデータ AssertionConsumerService
要素が見つからない場合、またはオーバーライドする場合は、アプリケーション登録マニフェストの replyUrlsWithType
プロパティを構成します。 Azure AD B2C では、replyUrlsWithType
バインドの種類を使用してサインインした後、HTTP-POST
を使用してユーザーをリダイレクトします。
SAML テストアプリケーションを例にとると、url
の replyUrlsWithType
プロパティを次の JSON スニペットに示す値に設定します。
"replyUrlsWithType":[
{
"url":"https://samltestapp2.azurewebsites.net/SP/AssertionConsumer",
"type":"Web"
}
],
サインアウト URL をオーバーライドまたは設定する (オプション)
サインアウト URL は、サインアウト要求後にユーザーをリダイレクトする場所を定義します。 通常、アプリケーションは、次の例に示すように、この URL を Location
要素の SingleLogoutService
属性としてメタデータ ドキュメントで提供します。
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://samltestapp2.azurewebsites.net/logout" ResponseLocation="https://samltestapp2.azurewebsites.net/logout" />
</SPSSODescriptor>
アプリケーションのメタデータ SingleLogoutService
要素が見つからない場合は、アプリケーション登録マニフェストの logoutUrl
プロパティを構成します。 Azure AD B2C では logoutURL
を使用してユーザーがサインアウトした後、HTTP-Redirect
バインドの種類を使用してリダイレクトします。
SAML テストアプリケーションを例にとると、 logoutUrl
プロパティを次のように設定します https://samltestapp2.azurewebsites.net/logout
。
"logoutUrl": "https://samltestapp2.azurewebsites.net/logout",
注
samlMetadataUrl
プロパティを使用してアプリケーションのメタデータ エンドポイントを設定せずに、アプリケーション マニフェストで応答 URL とログアウト URL を構成することを選択した場合、Azure AD B2C は SAML 要求の署名を検証しません。 SAMLレスポンスも暗号化されません。
Azure AD B2C を SAML アプリケーションで SAML IdP として構成する
最後の手順では、Azure AD B2C を SAML アプリケーションで SAML IdP として有効にします。 各アプリケーションは異なり、手順は異なります。 詳細については、アプリのドキュメントを参照してください。
メタデータは、アプリケーションで 静的メタデータ または 動的メタデータとして構成できます。 静的モードでは、Azure AD B2C ポリシー メタデータからメタデータのすべてまたは一部をコピーします。 動的モードでは、メタデータの URL を指定し、アプリケーションがメタデータを動的に読み取れるようにします。
通常、次の一部またはすべてが必要です。
メタデータ:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/Samlp/metadata
形式を使用します。発行者: SAML リクエストの
issuer
値は、アプリケーション登録マニフェストのidentifierUris
要素で設定された URI のいずれかと一致する必要があります。 SAML リクエストのissuer
名がidentifierUris
要素に存在しない場合は、 アプリケーション登録マニフェストに追加します。 たとえば、https://contoso.onmicrosoft.com/app-name
と指定します。ログイン URL、SAML エンドポイント、SAML URL: Azure AD B2C SAML ポリシー メタデータ ファイルで
<SingleSignOnService>
XML 要素の値を確認します。証明書: この証明書は B2C_1A_SamlIdpCertですが、秘密キーは含まれていません。 証明書の公開鍵を取得するには、次のようにします。
- 前に指定したメタデータ URL に移動します。
-
<X509Certificate>
要素の値をコピーします。 - テキストファイルに貼り付けます。
- テキスト ファイルを .cer ファイルとして保存します。
SAML テストアプリでテストする
SAMLテストアプリケーションを使用して、設定をテストできます。
- テナント名を更新します。
- ポリシー名を更新します。 たとえば、B2C_1A_signup_signin_saml を使用します。
- 発行者の URI を指定します。 アプリケーション登録マニフェストの
identifierUris
要素にある URI のいずれかを使用します。 たとえば、https://contoso.onmicrosoft.com/app-name
を使用します。
[ログイン] を選択すると、ユーザーのサインイン画面が表示されます。 サインインすると、SAML 応答がサンプル アプリケーションに返されます。
サポートされている SAML モダリティとサポートされていない SAML モダリティ
次の SAML アプリケーション・シナリオは、独自のメタデータ・エンドポイントを介してサポートされます。
- アプリケーションまたはサービス プリンシパル オブジェクトのサインアウト URL に複数のサインアウト URL または POST バインディングを指定します。
- 署名キーを指定して、アプリケーションまたはサービス プリンシパル オブジェクト内の証明書利用者要求を確認します。
- トークン暗号化キーをアプリケーションまたはサービス プリンシパル オブジェクトに指定します。
- IdP が開始するサインオンを指定します (ID プロバイダーは Azure AD B2C)。
関連コンテンツ
- Azure AD B2C GitHub コミュニティ リポジトリから SAML テスト Web アプリを取得します。
- Azure AD B2C で SAML アプリケーションを登録するためのオプションを参照してください。
- 開発者のベスト プラクティスを使用して回復性を構築する方法について説明します。