パスワードレス認証のために Azure Active Directory B2C を使用して Transmit Security を構成する

このチュートリアルでは、Azure Active Directory B2C (Azure AD B2C) 認証と、パスワードレス認証ソリューションである Transmit Security BindIDを統合する方法について説明します。 BindID では、信頼性の高いオムニチャネル認証のために強力な Fast Identity Online (FIDO2) 生体認証を使用します。 このソリューションを使用すると、デバイスおよびチャネル全体で、顧客のサインイン エクスペリエンスがスムーズになり、さらに不正行為、フィッシング、および資格情報の再利用が削減されます。

シナリオの説明

次のアーキテクチャ図は実装を示しています。

BindID と Azure AD B2C アーキテクチャの図。

  1. ユーザーが Azure AD B2C のサインイン ページを開き、サインインまたはサインアップします。
  2. Azure AD B2C は、OpenID Connect (OIDC) 要求を使用してユーザーを BindID にリダイレクトします。
  3. BindID は、指紋などの、アプリレスの FIDO2 生体認証を使用してユーザーを認証します。
  4. 分散型認証の応答が BindID に返されます。
  5. OIDC 応答は Azure AD B2C に渡されます。
  6. ユーザーは、検証結果に基づいて、アプリケーションへのアクセスを許可または拒否されます。

前提条件

開始するには、以下が必要です。

BindID でアプリを登録する

作業を開始するには:

  1. developer.bindid.io に移動してアプリケーションを構成します
  2. BindID 管理ポータルでアプリケーションを追加します。 サインインする必要があります。
プロパティ 説明
名前 アプリケーション名
Domain your-B2C-tenant-name.onmicrosoft.com」と入力します。 your-B2C-tenant を、Azure AD B2C テナントに置き換えます。
リダイレクト URI https://jwt.ms/
リダイレクト URI https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp」と入力します。 your-B2C-tenant を、Azure AD B2C テナントに置き換えます。 カスタム ドメインについては、your-B2C-tenant-name.b2clogin.com を自分のカスタム ドメインに置き換えます。
  1. 登録すると、クライアント IDクライアント シークレット が表示されます。
  2. 後で使用する値を記録します。

Azure AD B2C で ID プロバイダーとして BindID を構成する

次の手順では、Azure AD B2C テナントでディレクトリを使用します。

  1. Azure portal にグローバル管理者としてサインインします。
  2. ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
  3. [Portal settings | Directories + subscriptions](ポータル設定 | ディレクトリとサブスクリプション) ページにある [ディレクトリ名] リストで、Azure AD B2C ディレクトリを見つけます。
  4. [切り替え] を選択します。
  5. Azure portal の左上にある [すべてのサービス] を選択します。
  6. Azure AD B2C を検索して選択します。
  7. [Identity Providers] を選択します。
  8. [新しい OpenID Connect プロバイダー] を選択します。
  9. [名前] を入力します。
  10. [メタデータ URL]https://signin.bindid-sandbox.io/.well-known/openid-configuration を入力します。
  11. [クライアント ID] に、記録したクライアント ID を入力します。
  12. [クライアント シークレット] に、記録したクライアント シークレットを入力します。
  13. [スコープ] で、 を入力します。
  14. [応答の種類] で、[code] (コード) を選択します。
  15. [応答モード] で、[form_post] を選択します。
  16. [ID プロバイダーの要求のマッピング][ユーザー ID] で、sub を選択します。
  17. [メール] で、email を選択します。
  18. [保存] を選択します。

ユーザー フローを作成する

  1. Azure AD B2C テナントの [ポリシー] で、 [ユーザー フロー] を選択します。
  2. [新しいユーザー フロー] を選択します。
  3. [サインアップとサインイン] のユーザー フロー タイプを選択します。
  4. [作成] を選択します。
  5. [名前] を入力します。
  6. [ID プロバイダー][ローカル アカウント] で、[なし] を選択します。 このアクションにより、メールとパスワードベースの認証が無効になります。
  7. [カスタム ID プロバイダー] で、作成した BindID ID プロバイダー ([Login with BindID](BindID でログイン) など) を選択します。
  8. [作成] を選択します

ユーザー フローをテストする

  1. Azure AD B2C テナントで、[ユーザー フロー] を選択します。
  2. 作成されたユーザー フロー (B2C_1_signupsignin など) を選択します。
  3. [アプリケーション] で、登録した Web アプリケーションを選択します。 [返信 URL]https://jwt.ms です。
  4. [ユーザー フローを実行します] を選択します。
  5. ブラウザーが BindID のサインイン ページにリダイレクトされます。
  6. 登録済みアカウントのメールアドレスを入力します。
  7. 指紋など、アプリレスの FIDO2 生体認証を使用して認証します。
  8. ブラウザーは https://jwt.ms にリダイレクトされます。 Azure AD B2C によって返されたトークンの内容が表示されます。

BindID ポリシー キーを作成する

BindID アプリケーションのクライアント シークレットをポリシー キーとして追加します。 次の手順では、Azure AD B2C テナントでディレクトリを使用します。

  1. Azure portal にサインインします。
  2. ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
  3. [Portal settings | Directories + subscriptions](ポータル設定 | ディレクトリとサブスクリプション) ページの [ディレクトリ名] リストで、Azure AD B2C ディレクトリを見つけます。
  4. [切り替え] を選択します。
  5. [概要] ページで、[ポリシー] を選択してから [Identity Experience Framework] を選択します。
  6. [ポリシー キー] を選択します。
  7. [追加] を選択します。
  8. [オプション] には [手動] を選択します。
  9. [名前] を入力します。 プレフィックス B2C_1A_ がキー名に追加されます。
  10. [シークレット] に、記録したクライアント シークレットを入力します。
  11. [キー使用法] には [署名] を選択します。
  12. [作成] を選択します

ID プロバイダーとして BindID を構成する

BindID でサインインできるようにするには、Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとして BindID を定義します。 エンドポイントは、デバイス上のデジタル ID を使用してユーザー認証を検証するために Azure AD B2C によって使用されるクレームを提供します。

クレーム プロバイダーとして BindID を追加します。 作業を開始するには、GitHub からカスタム ポリシー スターター パックを取得し、SocialAndLocalAccounts スターター パック内の XML ファイルを Azure AD B2C テナントの名前に更新します。

  1. active-directory-b2c-custom-policy-starterpack-main.zip の zip フォルダーを開くか、リポジトリを複製します。

        git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
    
  2. LocalAccounts ディレクトリ内のファイルで、yourtenant という文字列を Azure AD B2C テナントの名前に置き換えます。

  3. LocalAccounts/ TrustFrameworkExtensions.xml を開きます。

  4. ClaimsProviders 要素を見つけます。 この要素が表示されない場合は、ルート要素の下に追加します。

  5. 次の例のような新しい ClaimsProvider を追加します。

     <ClaimsProvider>
         <Domain>signin.bindid-sandbox.io</Domain>
         <DisplayName>BindID</DisplayName>
         <TechnicalProfiles>
           <TechnicalProfile Id="BindID-OpenIdConnect">
             <DisplayName>BindID</DisplayName>
             <Protocol Name="OpenIdConnect" />
             <Metadata>
               <Item Key="METADATA">https://signin.bindid-sandbox.io/.well-known/openid-configuration</Item>
                <!-- Update the Client ID below to the BindID Application ID -->
               <Item Key="client_id">00000000-0000-0000-0000-000000000000</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_BindIDClientSecret" />
             </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>    
    
  6. client_id を、記録した BindID アプリケーション ID に設定します。

  7. [保存] を選択します。

ユーザー体験を追加する

ID プロバイダーはサインイン ページにはありません。 カスタム ユーザー体験がある場合は、「ユーザー体験に ID プロバイダーを追加する」に進みます。それ以外の場合は、テンプレートを複製してユーザー体験を作成します。

  1. スターター パックの LocalAccounts/ TrustFrameworkBase.xml ファイルを開きます。
  2. Id=SignUpOrSignIn を含む UserJourneys 要素を見つけて、その内容をコピーします。
  3. LocalAccounts/ TrustFrameworkExtensions.xml を開きます。
  4. UserJourneys 要素を見つけます。 この要素がない場合は、要素を追加します。
  5. UserJourney 要素を UserJourneys 要素の子として貼り付けます。
  6. ユーザー体験 ID の名前を変更します。

ユーザー体験に ID プロバイダーを追加する

新しい ID プロバイダーをユーザー体験に追加します。

  1. ユーザー体験内で、Type=CombinedSignInAndSignUp または Type=ClaimsProviderSelection を含むオーケストレーション ステップ要素を見つけます。 これは通常、最初のオーケストレーション ステップです。 ClaimsProviderSelections 要素には、ユーザーのサインインに使用する ID プロバイダーの一覧が含まれています。 要素の順序により、サインイン ボタンの順序が制御されます。
  2. ClaimsProviderSelection XML 要素を追加します。
  3. TargetClaimsExchangeId の値をフレンドリ名に設定します。
  4. ClaimsExchange 要素を追加します。
  5. Id を、ターゲットの要求交換 ID の値に設定します。 この操作により、BindID ボタンが BindID-SignIn にリンクされます。
  6. TechnicalProfileReferenceId の値を、作成した技術プロファイルの ID に更新します。

次の XML は、ID プロバイダーを使用したオーケストレーションのユーザー体験を示しています。

    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        ...
        <ClaimsProviderSelection TargetClaimsExchangeId="BindIDExchange" />
      </ClaimsProviderSelections>
      ...
    </OrchestrationStep>
    
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      ...
      <ClaimsExchanges>
        <ClaimsExchange Id="BindIDExchange" TechnicalProfileReferenceId="BindID-OpenIdConnect" />
      </ClaimsExchanges>
    </OrchestrationStep>

証明書利用者ポリシーを構成する

証明書利用者ポリシー (例: SignUpOrSignIn.xml) により、Azure AD B2C が実行するユーザー体験が指定されます。 PolicyProfile TechnicalProfile 要素の OutputClaims 要素を調整することで、アプリケーションに渡されるクレームを制御することができます。 このチュートリアルでは、アプリケーションは、表示名、名、姓、メールアドレス、objectId、ID プロバイダー、tenantId などのユーザー属性を受け取ります。

Azure-Samples/active-directory-b2c-custom-policy-starterpack」を参照してください

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignInWithBindID" />
    <TechnicalProfile Id="BindID-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>

カスタム ポリシーをアップロードする

  1. Azure portal にサインインします。
  2. ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
  3. [Portal settings | Directories + subscriptions](ポータル設定 | ディレクトリとサブスクリプション) ページにある [ディレクトリ名] リストで、Azure AD B2C ディレクトリを見つけます。
  4. [切り替え] を選択します。
  5. Azure portal で、 [Azure AD B2C] を検索して選択します。
  6. [ポリシー][Identity Experience Framework] を選択します。
  7. [カスタム ポリシーのアップロード] を選択します。
  8. LocalAccounts スターター パック内のファイルを次の順序でアップロードします。
  • 基本ポリシー (例: TrustFrameworkBase.xml)
  • ローカライズ ポリシー (例: TrustFrameworkLocalization.xml)
  • 拡張機能ポリシー (例: TrustFrameworkExtensions.xml)
  • 証明書利用者ポリシー (SignUpOrSignIn.xml など)

カスタム ポリシーのテスト

次の手順では、Azure AD B2C テナントでディレクトリを使用します。

  1. Azure AD B2C テナントの [ポリシー] の下で、[Identity Experience Framework] を選択します。
  2. [カスタム ポリシー] ページで、B2C_1A_signup_signin を選択します。
  3. [アプリケーション] で、登録した Web アプリケーションを選択します。 [返信 URL]https://jwt.ms です。
  4. [今すぐ実行] を選択します。
  5. ブラウザーが BindID のサインイン ページにリダイレクトされます。
  6. 登録済みアカウントのメールアドレスを入力します。
  7. 指紋など、アプリレスの FIDO2 生体認証を使用して認証します。
  8. ブラウザーは https://jwt.ms にリダイレクトされます。 Azure AD B2C によって返されたトークンの内容が表示されます。

次のステップ

追加情報については、次の記事を参照してください。