チュートリアル: パスワードレス認証のために Azure Active Directory B2C と BlokSec を構成する

開始する前に

Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または構成可能なカスタム ポリシーを使用する) があります。

Note

Azure Active Directory B2C で、カスタム ポリシーは、主に複雑なシナリオで使用されます。 ほとんどのシナリオで、組み込みのユーザー フローを使用することをお勧めします。
ユーザー フローとカスタム ポリシーの概要」を参照してください。

Azure AD B2C と BlokSec

Azure Active Directory B2C (Azure AD B2C) 認証を BlokSec 分散 ID ルーターと統合する方法について説明します。 BlokSec ソリューションは、パスワードレス認証とトークンレス多要素認証を使用したユーザー サインインを簡素化します。 このソリューションは、パスワード スタッフィング、フィッシング、中間者攻撃などの ID に関係した攻撃から顧客を保護します。

詳細については、BlokSec Technologies Inc. の bloksec.com を参照してください。

シナリオの説明

BlokSec 統合には、次のコンポーネントが含まれています。

  • Azure AD B2C – B2C アプリケーションの承認サーバーと ID プロバイダー (IdP)
  • BlokSec 分散型 ID ルーター – 認証要求および認可要求をユーザーの個人 ID プロバイダー (PIdP) アプリケーションにルーティングするための BlokSec DIaaS を適用するサービスのゲートウェイ
    • これは、Azure AD B2C の OpenID Connect (OIDC) ID プロバイダーです
  • BlokSec SDK ベースのモバイル アプリ - 分散型認証シナリオでのユーザーの PIdP。
    • BlokSec SDK を使用していない場合は、Google Play にアクセスして無料の BlokSec yuID を入手してください

次のアーキテクチャ図は、BlokSec ソリューション実装でのサインアップ、サインイン フローを示しています。

BlokSec ソリューション実装でのサインアップ、サインイン フローの図。

  1. ユーザーが Azure AD B2C アプリケーションにサインインすると、Azure AD B2C のサインインとサインアップのポリシーに転送されます。
  2. Azure AD B2C によって、ユーザーは、OIDC 認証コード フローを使用する BlokSec 分散化 ID ルーターにリダイレクトされます。
  3. BlokSec ルーターは、認証と承認の要求詳細とともにプッシュ通知をユーザー モバイル アプリに送信します。
  4. ユーザーは認証チャレンジを確認します。 受け入れられたユーザーは、指紋や顔のスキャンなどの生体認証を求められます。
  5. 応答は、ユーザーの一意のデジタル キーを使用してデジタル署名されます。 認証応答では、所有、存在、同意の証明を提供します。 応答はルーターに戻されます。
  6. ルーターは、分散型台帳に保存されているユーザーの変更することのできない一意の公開キーに照らし合わせてデジタル署名を検証します。 ルーターは、応答として認証結果を Azure AD B2C に返します。
  7. ユーザーは、アクセスを許可/拒否されます。

BlokSec を有効にする

  1. bloksec.com に移動し、[Request a demo] テナントを選択します。
  2. メッセージ フィールドに、Azure AD B2C と統合したいことを記入します。
  3. 無料の BlokSec yuID モバイル アプリをダウンロードしてインストールします。
  4. デモ テナントの準備が完了すると、電子メールが届きます。
  5. BlokSec アプリケーションがインストールされているモバイル デバイスで、yuID アプリで管理者アカウントを登録するリンクを選択します。

前提条件

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

チュートリアル: Azure AD B2C でユーザー フローとカスタム ポリシーを作成する」も参照してください。

BlokSec でアプリケーションの登録を作成する

BlokSec からのアカウント登録メールで、BlokSec 管理コンソールへのリンクを見つけます。

  1. BlokSec 管理コンソールにサインインします。
  2. メイン ダッシュボードで、[アプリケーションの追加] > [カスタムの作成] を選択します。
  3. [名前] には、Azure AD B2C またはアプリケーション名を入力します。
  4. [SSO の種類][OIDC] を選択します。
  5. [ロゴ URI] に、ロゴ画像へのリンクを入力します。
  6. [リダイレクト URI] には、https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp を使用します。 たとえば、「 https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp 」のように入力します。 カスタム ドメインの場合、https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp を入力します。
  7. [ログアウト後のリダイレクト URI] に、https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/{policy}/oauth2/v2.0/logout を入力します。
  8. 作成した Azure AD B2C アプリケーションを選択して、アプリケーション構成を開きます。
  9. [アプリ シークレットの生成] を選択します。

詳細については、「サインアウト要求を送信する」を参照してください。

Note

アプリケーション ID とアプリケーション シークレットは、Azure AD B2C で ID プロバイダー (IdP) を構成するために必要です。

Azure AD B2C で新しい ID プロバイダーを追加する

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

  1. Azure AD B2C テナントの全体管理者として Azure portal にサインインします。
  2. ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
  3. [ポータルの設定]、[ディレクトリとサブスクリプション] ページの [ディレクトリ名] リストで、自分の Azure AD B2C ディレクトリを見つけます。
  4. [切り替え] を選択します。
  5. Azure portal の左上にある [すべてのサービス] を選択します。
  6. Azure AD B2C を検索して選択します。
  7. [ダッシュボード]>[Azure Active Directory B2C]>[ID プロバイダー] の順に移動します。
  8. [新しい OpenID Connect プロバイダー] を選択します。
  9. [追加] を選択します。

ID プロバイダーの構成

  1. [ID プロバイダーの種類] > [OpenID Connect] の順に選択します。
  2. [名前] に「BlokSec yuID Passwordless」または別の名前を入力します。
  3. [メタデータ URL]https://api.bloksec.io/oidc/.well-known/openid-configuration を入力します。
  4. [クライアント IDV] に BlokSec 管理者 UI のアプリケーション ID を入力します。
  5. [クライアント シークレット] に BlokSec 管理者 UI のアプリケーション シークレットを入力します。
  6. [スコープ][OpenID 電子メール プロファイル] を選択します。
  7. [応答の種類][コード] を選択します。
  8. [ドメインのヒント][yuID] を選択します。
  9. [OK] を選択します。
  10. [Map this identity provider's claims] を選択します。
  11. [ユーザー ID] [サブ] を選択します。
  12. [表示名][名前] を選択します。
  13. [指定された名前] には given_name を使用します。
  14. [姓] には、family_name を使用します。
  15. [電子メール] には、email を使用します。
  16. [保存] を選択します。

ユーザーの登録

  1. 指定した資格情報を使用して BlokSec 管理コンソールにサインインします。
  2. 前に作成した Azure AD B2C アプリケーションに移動します。
  3. 右上にある歯車アイコンを選択します。
  4. [アカウントの作成] を選択します。
  5. [アカウントの作成] で、ユーザー情報を入力します。 アカウント名をメモします。
  6. [送信] を選択します。

ユーザーは、指定したメール アドレスでアカウント登録メールを受信します。 BlokSec yuID アプリを使用してモバイル デバイスの登録リンクを選択するようにユーザーに指示します。

ユーザー フロー ポリシーの作成

次の手順では、BlokSec が新しい OIDC ID プロバイダー (IdP) になっていることを確認します。

  1. Azure AD B2C テナントの [ポリシー] で、 [ユーザー フロー] を選択します。
  2. [新しいユーザー フロー] を選択します。
  3. [サインアップとサインイン]>[バージョン]>[作成] を選択します。
  4. ポリシーを入力します。
  5. [ID プロバイダー] セクションで、作成した BlokSec ID プロバイダーを選択します。
  6. [ローカル アカウント] で、[なし] を選択します。 このアクションにより、メールとパスワードベースの認証が無効になります。
  7. [ユーザー フローを実行します] を選択します。
  8. フォームに、https://jwt.ms のような 返信 URL を入力します。
  9. ブラウザーが BlokSec のサインイン ページにリダイレクトされます。
  10. ユーザー登録のアカウント名を入力します。
  11. ユーザーは、BlokSec yuID アプリケーションを使用してモバイル デバイスでプッシュ通知を受け取ります。
  12. ユーザーが通知を開くと、認証チャレンジが表示されます。
  13. 認証が受け入れられると、ユーザーはブラウザーによって応答 URL にリダイレクトされます。

Note

Azure Active Directory B2C で、カスタム ポリシーは、主に複雑なシナリオで使用されます。 ほとんどのシナリオで、組み込みのユーザー フローを使用することをお勧めします。
ユーザー フローとカスタム ポリシーの概要」を参照してください。

ポリシー キーを作成する

Azure AD B2C テナントに、記録したクライアント シークレットを格納します。 次の手順では、Azure AD B2C テナントでディレクトリを使用します。

  1. Azure portal にサインインします。
  2. ポータルのツール バーで、[ディレクトリとサブスクリプション] を選択します。
  3. [ポータルの設定]、[ディレクトリとサブスクリプション] ページの [ディレクトリ名] リストで、自分の Azure AD B2C ディレクトリを見つけます。
  4. [切り替え] を選択します。
  5. Azure portal の左上にある [すべてのサービス] を選択します。
  6. Azure AD B2C を検索して選択します。
  7. [概要] ページで、 [Identity Experience Framework] を選択します。
  8. [ポリシー キー] を選択します。
  9. [追加] を選択します。
  10. [オプション] では、 [手動] を選びます。
  11. ポリシー キーにポリシー名を入力します。 たとえば、「 BlokSecAppSecret 」のように入力します。 プレフィックス B2C_1A_ がキー名に追加されます。
  12. [シークレット] に、メモしたクライアント シークレットを入力します。
  13. [キー使用法] には [署名] を選択します。
  14. [作成] を選択します

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

ユーザーが BlokSec 分散化 ID を使用してサインインできるようにするには、BlokSec をクレーム プロバイダーとして定義します。 このアクションにより、Azure AD B2C はエンドポイントを介して確実に通信できるようになります。 Azure AD B2C では、エンドポイント要求を使用して、指紋や顔スキャンなどの生体認証を使用したユーザーの ID 認証を検証します。

BlokSec をクレーム プロバイダーとして定義するには、ポリシー拡張ファイルの ClaimsProvider 要素に BlokSec を追加します。

  1. TrustFrameworkExtensions.xml を開きます。

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

  3. 新しい ClaimsProvider を追加するには:

    <ClaimsProvider>
      <Domain>bloksec</Domain>
      <DisplayName>BlokSec</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="BlokSec-OpenIdConnect">
          <DisplayName>BlokSec</DisplayName>
          <Description>Login with your BlokSec decentriled identity</Description>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="METADATA">https://api.bloksec.io/oidc/.well-known/openid-configuration</Item>
            <!-- Update the Client ID below to the BlokSec Application ID -->
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile email</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="DiscoverMetadataByTokenIssuer">true</Item>
            <Item Key="ValidTokenIssuerPrefixes">https://api.bloksec.io/oidc</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_BlokSecAppSecret" />
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. client_id を、アプリケーションの登録で取得したアプリケーション ID に設定します。

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

ユーザー体験を追加する

ID プロバイダーが設定されているが、サインイン ページでは設定されていない場合は、次の手順に従います。 カスタム ユーザー体験がない場合は、テンプレート ユーザー体験をコピーします。

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

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

これでユーザー体験ができたので、ユーザー体験に新しい ID プロバイダーを追加します。 最初にサインイン ボタンを追加してから、それを作成した技術プロファイルのアクションにリンクします。

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

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

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="BlokSecExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="BlokSecExchange" TechnicalProfileReferenceId="BlokSec-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

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

証明書利用者ポリシー (例: SignUpSignIn.xml) は、Azure AD B2C が実行するユーザー体験を指定します。

  1. 証明書利用者の DefaultUserJourney 要素を見つけます。
  2. ID プロバイダーを追加したユーザー体験 ID と一致するように ReferenceId を更新します。

次の例では、CustomSignUpOrSignIn ユーザー体験について、ReferenceId を CustomSignUpOrSignIn に設定しています。

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

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

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

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

カスタム ポリシーをテストする

  1. 証明書利用者ポリシー (B2C_1A_signup_signin など) を選択します。
  2. [アプリケーション] で、登録した Web アプリケーションを選択します。
  3. [応答 URL] には https://jwt.ms として表示されます。
  4. [今すぐ実行] を選択します。
  5. サインアップまたはサインイン ページで、 [Google] を選択して、Google アカウントでサインインします。
  6. ブラウザーは https://jwt.ms にリダイレクトされます。 Azure AD B2C によって返されるトークンの内容を確認します。

詳細については、「チュートリアル: Azure Active Directory B2C に Web アプリケーションを登録する」を参照してください。

次のステップ