重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
このチュートリアルでは、Azure Active Directory B2C (Azure AD B2C) 認証と 、Transmit Security のホステッド パスキー認証ソリューションを統合する方法について説明します。 送信セキュリティでは、信頼性の高いオムニチャネル認証に強力な Fast Identity Online (FIDO2) 生体認証が使用されます。 このソリューションにより、デバイスやチャネルをまたいで顧客にスムーズなサインイン エクスペリエンスを提供しながら、不正行為、フィッシング、資格情報の再利用を減らすことができます。
シナリオの説明
次のアーキテクチャ図は、実装を示しています。
- ユーザーが Azure AD B2C サインイン ページを開き、サインインまたはサインアップします。
- Azure AD B2C は、OpenID Connect (OIDC) 要求を使用してユーザーを送信セキュリティにリダイレクトします。
- Transmit Security は、指紋などのアプリレス FIDO2 生体認証を使用してユーザーを認証します。
- 分散認証応答が送信セキュリティに返されます。
- OIDC 応答は Azure AD B2C に渡されます。
- ユーザーは、検証結果に基づいて、アプリケーションへのアクセスを許可または拒否されます。
[前提条件]
開始するには、次のものが必要です。
- Microsoft Entra サブスクリプション。 お持ちでない場合は、 無料アカウントを入手してください。
- Entra サブスクリプションにリンクされている Azure AD B2C テナント。
- Azure AD B2C テナントに登録されている Web アプリケーション。
- Transmit Security テナント。 transmitsecurity.com に移動します。
- Microsoft Entra サブスクリプション。 お持ちでない場合は、 無料アカウントを入手してください。
- Entra サブスクリプションにリンクされている Azure AD B2C テナント。
- Azure AD B2C テナントに登録されている Web アプリケーション。
- Azure AD B2C カスタム ポリシー。
- Transmit Security テナント。 transmitsecurity.com に移動します。
手順 1: 送信アプリを作成する
Transmit 管理ポータルにサインインし、アプリケーションを作成します。
[アプリケーション] から [アプリケーションの追加] を選択します。
次の属性を使用してアプリケーションを構成します。
プロパティ 説明 アプリケーション名 アプリケーション名 クライアント名 クライアント名 リダイレクト URI https://<your-B2C-tenant>.b2clogin.com/<your-B2C-tenant>.onmicrosoft.com/oauth2/authrespここで、<your-B2C-tenant>は Azure AD B2C テナント ドメイン (またはカスタム ドメイン<your-B2C-tenant>.b2clogin.com) です[] を選択し、[] を追加します。
登録すると、 クライアント ID と クライアント シークレット が表示されます。 後で使用する値を記録します。
手順 2: サインイン エクスペリエンスを構成する
送信管理ポータルから、ユーザー認証エクスペリエンスを構成します。
[ 認証] を選択し、[ エクスペリエンス管理] を選択します。
ドロップダウン メニューから、アプリケーションを選択します。
次の属性を使用してアプリケーションを構成します。
プロパティ 説明 ユーザー識別子 [電子メール] を選択する プライマリ認証方法 Passkey を選択する セカンダリ認証方法 WebAuthn QR と電子メール OTP のみを有効にする ユーザー情報の選択 すべての既定のフィールドを削除する 保存 を選択します。
手順 3: ID プロバイダーとして Transmit を追加する
ユーザーが Transmit Security でサインインできるようにするには、新しい ID プロバイダーとして Transmit Security を構成します。 Azure AD B2C では、次の手順に従います。
少なくとも B2C IEF ポリシー管理者として Azure portal にサインインします。
ポータルのツール バーで、[ ディレクトリとサブスクリプション] を選択します。
ポータルの 設定 |[ディレクトリとサブスクリプション ] ページの [ディレクトリ名 ] 一覧で、Azure AD B2C ディレクトリを見つけて、[ 切り替え] を選択します。
Azure サービスで、Azure AD B2C を選択します (または[その他のサービス] を選択し、[すべてのサービス] 検索ボックスを使用して Azure AD B2C を検索します)。
[ID プロバイダー] を選択し、[新しい OpenID Connect プロバイダー] を選択します。
次のようにプロバイダーを構成します。
プロパティ 説明 名前 Transmit Security などの名前 メタデータ URL https://api.transmitsecurity.io/cis/oidc/.well-known/openid-configurationクライアント ID 送信によって提供されるクライアント ID クライアント シークレット Transmit によって提供されるクライアント シークレット スコープ openid email応答の種類 コード 応答モード form_post 表示名 email電子メール email保存 を選択します。
手順 4: ユーザー フローを作成する
この時点で、送信セキュリティ ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 ユーザー フローに送信セキュリティ ID プロバイダーを追加するには:
- Azure AD B2C テナントの [ ポリシー] で、[ ユーザー フロー] を選択します。
- [ 新しいユーザー フロー] を選択します。
- [ サインアップとサインイン ユーザー フローの種類] を選択し、[ 作成] を選択します。
- ユーザー フローの名前 (signupsignin など) を入力します。
-
アイデンティティプロバイダーの下で、以下の手順に従ってください。
- [ローカル アカウント] で、[なし] を選択します。
- カスタム ID プロバイダーの場合は、送信セキュリティ プロバイダーを選択します。
- [ 作成] を選択してユーザー フローを追加します。
手順 5: ユーザー フローをテストする
- Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
- 作成したユーザー フロー (B2C_1_signupsigninなど) を選択します。
- [ ユーザー フローの実行] を選択します。
- [ アプリケーション] で、登録済みの Web アプリケーションを選択します。
- [ 応答 URL] で、[
https://jwt.ms] を選択します。
- ユーザー フローを実行する を選択します。
- ブラウザーは、Transmit のサインイン ページにリダイレクトされます。
- サインイン フローを完了します。アカウントの電子メールを入力し、生体認証 (指紋など) を使用して認証します。
- ブラウザーは、Azure AD B2C トークンを使用して
https://jwt.msにリダイレクトされます。
手順 3: ポリシー キーを作成する
以前に Azure AD B2C テナントに記録した Transmit アプリケーションのクライアント シークレットを格納する必要があります。
Azure portal にサインインします。
ポータルのツール バーで、[ ディレクトリとサブスクリプション] を選択します。
ポータルの 設定 |[ディレクトリとサブスクリプション ] ページの [ディレクトリ名 ] 一覧で、Azure AD B2C ディレクトリを見つけて、[ 切り替え] を選択します。
[概要] ページの [ ポリシー] で、[ Identity Experience Framework] を選択します。
[ポリシー キー] を選択してから、[追加] を選択します。
ポリシー キーを次のように構成します。
プロパティ 説明 [オプション] 手動 名前 ポリシー キー名 (TransmitClientSecret など) シークレット Transmit によって提供されるクライアント シークレット キー使用法 署名 [ 作成] を選択してポリシー キーを追加します。
手順 4: アイデンティティプロバイダーとしてTransmitを追加する
Transmit Security でのサインインを有効にするには、Azure AD B2C がエンドポイントを介して通信するクレーム プロバイダーとして、Transmit Security を定義します。 エンドポイントは、デバイス上のデジタル ID で認証されたユーザーを検証するために Azure AD B2C によって使用される要求を提供します。
送信セキュリティは、ポリシーの拡張ファイルの ClaimsProviders 要素に追加することで、要求プロバイダーとして定義できます。
GitHub からカスタム ポリシー スターター パックを取得し、SocialAndLocalAccounts スターター パックの XML ファイルを Azure AD B2C テナント名で更新します。
.zip ファイルをダウンロード するか、リポジトリを複製します。
git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpackLocalAccounts ディレクトリ内のファイルで、
yourtenant文字列を Azure AD B2C テナント名に置き換えます。
LocalAccounts/ TrustFrameworkExtensions.xmlを開きます。ClaimsProviders 要素を検索します。 表示されない場合は、ルート要素の下に追加します。
次の例のような新しい ClaimsProvider を追加します。
<ClaimsProvider> <Domain>api.transmitsecurity.io</Domain> <DisplayName>Transmit</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="TS-OpenIdConnect"> <DisplayName>Transmit</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://api.transmitsecurity.io/cis/oidc/.well-known/openid-configuration</Item> <!-- Update the Client ID below to the Transmit Security client ID --> <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid email</Item> <Item Key="response_mode">form_post</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="AccessTokenResponseFormat">json</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_TransmitClientSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>送信セキュリティ クライアント ID を使用して client_id を設定します。
client_secret セクションを、作成したポリシー キーの名前 (たとえば、B2C_1A_TransmitClientSecret) で更新します。
<Key Id="client_secret" StorageReferenceId="B2C_1A_TransmitClientSecret" />保存 を選択します。
手順 5: ユーザー体験を追加する
この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 カスタム ユーザー ジャーニーがある場合は、ユーザー ジャーニーへの 伝達を追加する手順へ 進みます。 それ以外の場合は、重複するテンプレート ユーザー体験を作成します。
- スターター パックから、
LocalAccounts/ TrustFrameworkBase.xmlファイルを開きます。 -
を含む
Id=SignUpOrSignIn要素の内容を検索してコピーします。 -
LocalAccounts/ TrustFrameworkExtensions.xmlを開きます。 - UserJourneys 要素を見つけます。 要素がない場合は、要素を追加します。
- UserJourney 要素を UserJourneys 要素の子として貼り付けます。
- ユーザー体験 ID の名前を変更します (例:
Id=TransmitSUSI)
手順 6: ユーザー体験に送信を追加する
新しい ID プロバイダーをユーザー体験に追加します。
- ユーザー体験に
Type=CombinedSignInAndSignUpまたはType=ClaimsProviderSelectionを含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインする ID プロバイダーの一覧があります。 要素の順序は、サインイン ボタンの順序を制御します。 - ClaimsProviderSelection XML 要素を追加します。
- TargetClaimsExchangeId の値をフレンドリ名に設定します。
- ClaimsExchange 要素を追加します。
- Id をターゲット要求交換 ID の値に設定します。
- TechnicalProfileReferenceId の値を、作成した技術プロファイル ID に更新します。
次の XML は、ID プロバイダーとのオーケストレーション ユーザー体験を示しています。
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="TSIDExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="TSIDExchange" TechnicalProfileReferenceId="TS-OpenIdConnect" />
</ClaimsExchanges>
</OrchestrationStep>
手順 7: 証明書利用者ポリシーを構成する
証明書利用者ポリシー ( SignUpSignIn.xmlなど) は、Azure AD B2C が実行するユーザー体験を指定します。 証明書利用者内の DefaultUserJourney 要素を検索します。 追加した ID プロバイダーのユーザージャーニー ID と一致するように ReferenceId を更新します。
次の例では、 TransmitSUSI ユーザー体験の ReferenceId が TransmitSUSIに設定されています。
<RelyingParty>
<DefaultUserJourney ReferenceId="TransmitSUSI" />
<TechnicalProfile Id="TS-OpenIdConnect">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
手順 8: カスタム ポリシーをアップロードする
Azure AD B2C テナントでディレクトリを使用して、カスタム ポリシーをアップロードします。
- Azure portal にサインインします。
- ポータルのツール バーで、[ ディレクトリとサブスクリプション] を選択します。
- ポータルの 設定 |[ディレクトリとサブスクリプション ] ページの [ディレクトリ名 ] 一覧で、Azure AD B2C ディレクトリを見つけて、[ 切り替え] を選択します。
- [ ポリシー] で、[ Identity Experience Framework] を選択します。
- [ カスタム ポリシーのアップロード] を選択し、更新されたファイルを次の順序でアップロードします。
- 基本ポリシー (例:
TrustFrameworkBase.xml - ローカライズ ポリシー (例:
TrustFrameworkLocalization.xml - 拡張機能ポリシー (例:
TrustFrameworkExtensions.xml - 依存先パーティ ポリシー (例:
SignUpOrSignIn.xmlなど)
手順 9: カスタム ポリシーをテストする
Azure AD B2C テナントでディレクトリを使用して、カスタム ポリシーをテストします。
- Azure AD B2C テナントで、[ ポリシー] で [ Identity Experience Framework] を選択します。
- [ カスタム ポリシー] で、[ B2C_1A_signup_signin] を選択します。
- [ アプリケーション] で、登録した Web アプリケーションを選択します。
応答 URL が
https://jwt.ms。 - [今すぐ実行] を選択します。
- ブラウザーは、Transmit のサインイン ページにリダイレクトされます。
- サインイン フローを完了します。アカウントの電子メールを入力し、生体認証 (指紋など) を使用して認証します。
- ブラウザーは、Azure AD B2C トークンを使用して
https://jwt.msにリダイレクトされます。
次のステップ
詳細については、次の記事を参照してください。