Twilio Verify App と Azure Active Directory B2C の統合

このチュートリアルでは、Azure Active Directory B2C (Azure AD B2C) のサンプル オンライン決済アプリを Twilio Verify API と統合する方法について説明します。 Twilio Verify App を使用することで、Azure AD B2C のお客様は、動的リンクと強力な顧客認証によって、PSD2 (Payment Services Directive 2) のトランザクション要件に準拠することができます。

前提条件

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

シナリオの説明

この Twilio ソリューションは、次のコンポーネントで構成されています。

  • サインインまたはサインアップし、ダミーの高リスクのトランザクションを実行できる、.NET PSD2 デモ Web アプリ

  • Azure AD B2C を組み合わせたサインインとサインアップ ポリシー

  • id_token_hint を使用して Twilio Verify API と統合された Azure AD B2C ポリシー。

  • .well-known OpenId Connect エンドポイントをホストして、id_token_hint の検証を可能にする .NET Web アプリ。

    twilio flow

手順 Description
1 ユーザーは、PSD2 デモ アプリへのサインインまたはサインアップを開始します。 ユーザーは、サインインとサインアップを組み合わせた Azure AD B2C ポリシーを使用して認証されます。 アプリケーションにトークンが返されます。 サインアップ時に、SMS および携帯電話を使用してユーザーの電話番号が確認され、Azure AD B2C アカウントに記録されます。
2 ユーザーは、50.00 ドルの送金など、高リスクのトランザクションを開始します。 PolicyId について、ユーザーの現在のアクセス トークンが評価され、ユーザーがステップアップ カスタム ポリシーを使用して既に認証されているかどうかが確認されます。
3 アプリケーションは、取引額 (50.00 ドル) と受取人 (John Doe) を記録し、署名済みトークンを生成します。 このトークンは id_token_hint と呼ばれ、要求 amount:$500, payee:john doe が含まれています。 id_token_hint は、Twilio と統合された Azure AD B2C カスタム ポリシーに要求と共に送信されます。
4 Azure AD B2C は、アプリケーションの /.well-known OpenId Connect エンドポイントを確認して、id_token_hint の署名を検証します。 検証後、このトークンから要求 (特に、amountpayee) が抽出されます。 ユーザーには、SMS メッセージによって携帯電話番号を確認するためのページが表示されます。
5 ユーザーが SMS メッセージによる電話番号の確認を要求すると、Azure AD B2C は Twilio の Verify API エンドポイントに対して REST API 要求を行います。 また、PSD2 プロセスの一環として、トランザクションの amountpayee を送信して、ワンタイム パスコード (OTP) を生成します。 Twilio は、ユーザーの登録済み電話番号に SMS メッセージを送信します。
6 ユーザーは SMS メッセージで受け取った OTP を入力し、Azure AD B2C に送信します。 Azure AD B2C は、Twilio の Verify API に対して、この OTP を使用した API 要求を行い、OTP が正しいことを確認します。 最後に、ユーザーが認証をステップアップしたことを示す新しい PolicyId を含むトークンがアプリケーションに発行されます。

Twilio を使用してオンボードする

  1. Twilio で試用版アカウントを取得します。

  2. こちらの記事の説明に従って、Twilio で電話番号を購入します。

  3. Twilio コンソールで Verify API に移動します。指示に従ってサービスを作成し、PSD2 オプションを有効にします。

PSD2 デモ アプリを構成する

  1. B2C-WebAPI-DotNet ソリューションを開き、web.config で次の値を独自のテナント固有の値に置き換えます。

    <add key="ida:Tenant" value="yourtenant.onmicrosoft.com" />
    <add key="ida:TenantId" value="d6f33888-0000-4c1f-9b50-1590f171fc70" />
    <add key="ida:ClientId" value="6bd98cc8-0000-446a-a05e-b5716ef2651b" />
    <add key="ida:ClientSecret" value="secret" />
    <add key="ida:AadInstance" value="https://yourtenant.b2clogin.com/tfp/{0}/{1}" />
    <add key="ida:RedirectUri" value="https://your hosted psd2 demo app url/" />
    
  2. Web アプリでは、ID トークン ヒント ジェネレーターおよびメタデータ エンドポイントもホストされます。

    • こちらのサンプルの説明に従って署名証明書を作成します。

    • 証明書に基づいて、web.config の次の行を更新します。

      <add key="ida:SigningCertThumbprint" value="4F39D6014818082CBB763E5BA5F230E545212E89" />
      <add key="ida:SigningCertAlgorithm" value="RS256" />
      
  3. 選択したホスティング プロバイダーにデモ アプリケーションをアップロードします。 証明書をアップロードする手順など、Azure App Service のガイダンスについては、こちらのサンプルの説明をご覧ください。

  4. アプリケーションがホストされている URL に対応する応答 URL を追加して、Azure AD B2C アプリケーションの登録を更新します。

  5. ポリシー ファイルを開き、contoso のすべてのインスタンスを実際のテナント名に置き換えます。

  6. Twilio REST API 技術プロファイルの Custom-SMS-Enroll を見つけます。 ServiceURL を Twilio AccountSID で更新し、From (発信元) 電話番号を購入した電話番号に更新します。

  7. Twilio REST API 技術プロファイルの TwilioRestAPI-Verify-Step1および TwilioRestAPI-Verify-Step2 を見つけ、ServiceURL を Twilio AccountSID で更新 します。

Azure AD B2C との統合

ポリシー ファイルを Azure AD B2C に追加します。

  1. Azure AD B2C テナントの全体管理者として Azure Portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. Azure Portal の左上隅の [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
  4. [Azure AD B2C]>[Identity Experience Framework]>[ポリシー キー] の順に移動します。
  5. B2cRestTwilioClientId という名前の新しいキーを追加します。 [手動] を選択して、Twilio AccountSID の値を入力します。
  6. B2cRestTwilioClientSecret という名前の新しいキーを追加します。 [手動] を選択して、Twilio 認証トークンの値を入力します。
  7. すべてのポリシー ファイルをテナントにアップロードします。
  8. サインアップ SMS テキストの GenerateOTPMessageEnrol  要求の変換の文字列をカスタマイズします。

ソリューションをテストする

  • アプリケーションを参照して、サインイン、サインアップ、送金の各アクションをテストします。

次のステップ

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