チュートリアル: Azure Active Directory B2C と Arkose Labs プラットフォームを構成する

このチュートリアルでは、Azure Active Directory B2C (Azure AD B2C) 認証と Arkose Labs の Arkose Protect Platform を統合する方法について説明します。 Arkose Labs 製品では、組織がボット攻撃、アカウント乗っ取り攻撃、および不正なアカウント開設を防ぐのを支援します。

前提条件

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

シナリオの説明

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

  • Arkose Protect Platform - ボットやその他の自動化された不正使用から保護するサービスです
  • Azure AD B2C のサインアップ ユーザー フロー - Arkose Labs プラットフォームを使用するサインアップ エクスペリエンスです
    • カスタム HTML、JavaScript、API コネクタを Arkose プラットフォームと統合します
  • Azure Functions - API コネクタ機能を使用して動作する、ユーザーがホストする API エンドポイントです
    • この API では、サーバー側の Arkose Labs のセッション トークンを検証します
    • 詳細については、Azure Functions の概要に関する記事を参照してください

次の図は、Arkose Labs プラットフォームを Azure AD B2C と統合する方法を示しています。

Arkose Labs プラットフォームと Azure AD B2C の統合アーキテクチャの図。

  1. ユーザーがサインアップし、アカウントを作成します。 ユーザーが [送信] を選択すると、Arkose Labs 適用チャレンジが表示されます。
  2. ユーザーがチャレンジを完了します。 Azure AD B2C によってその状態が Arkose Labs に送信され、トークンが生成されます。
  3. Arkose Labs によってトークンが Azure AD B2C に送信されます。
  4. Azure AD B2C によって中間 Web API が呼び出され、サインアップ フォームが渡されます。
  5. サインアップ フォームが、トークンの検証のために Arkose Labs に移動します。
  6. Arkose Labs によって、検証結果が中間 Web API に送信されます。
  7. API によって、成功または失敗の結果が Azure AD B2C に送信されます。
  8. チャレンジが成功すると、サインアップ フォームが Azure AD B2C に移動し、認証が完了します。

Arkose Labs からデモをリクエストする

  1. arkoselabs.com にアクセスしてデモを予約します
  2. アカウントを作成します。
  3. Arkose Portal のサインイン ページにアクセスします。
  4. ダッシュボードで、サイトの設定に移動します。
  5. 公開キーと秘密キーを見つけます。 この情報は後で使用します。

Note

公開キーと秘密キーの値は ARKOSE_PUBLIC_KEYARKOSE_PRIVATE_KEY です。 「Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose」を参照してください。

Azure AD B2C との統合

ArkoseSessionToken カスタム属性を作成する

カスタム属性を作成するには、次の手順を実行します。

  1. Azure portal にサインインして、[Azure AD B2C] に移動します。
  2. [ユーザー属性] を選択します。
  3. [追加] を選択します。
  4. 属性名に「ArkoseSesessionToken」と入力します。
  5. [作成] を選択します

詳細情報: Azure Active Directory B2C でカスタム属性を定義する

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

ユーザー フローは、サインアップとサインイン用またはサインアップ用です。 Arkose Labs のユーザー フローは、サインアップ中に表示されます。

  1. Azure Active Directory B2C でユーザー フローとカスタム ポリシーを作成します。 ユーザー フローを使用する場合は、[推奨] を使用します。

  2. ユーザー フローの設定で、[ユーザー属性] に移動します。

  3. ArkoseSessionToken 要求を選択します。

    [ユーザー属性] の [Arkose セッション トークン] のスクリーンショット。

カスタム HTML、JavaScript、ページ レイアウトを構成する

  1. Azure-Samples/active-directory-b2c-node-sign-up-user-flow-arkose にアクセスします。
  2. JavaScript の <script> タグを含む HTML テンプレートを見つけます。 これらは次の 3 つのことを行います。
  • Arkose Labs スクリプトを読み込みます。これにより、ウィジェットがレンダリングされ、クライアント側の Arkose Labs の検証が行われます。

  • ArkoseSessionToken カスタム属性に対応する extension_ArkoseSessionToken 入力要素とラベルを非表示にします。

  • ユーザーが Arkose Labs チャレンジを完了すると、ユーザーの応答が検証され、トークンが生成されます。 カスタム JavaScript のコールバック arkoseCallback によって、extension_ArkoseSessionToken の値が生成されたトークン値に設定されます。 この値は API エンドポイントに送信されます。

    Note

    クライアント側の手順については、developer.arkoselabs.com にアクセスしてください。 ユーザー フローにカスタム HTML と JavaScript を使用するには、記載されている手順に従ってください。

  1. Azure-Samples で、selfAsserted.html ファイルを変更して、<ARKOSE_PUBLIC_KEY> がクライアント側の検証用に生成した値と一致するようにします。

  2. クロスオリジン リソース共有 (CORS) が有効になっている Web エンドポイントで HTML ページをホストします。

  3. ストレージ アカウントの作成

  4. Azure Storage に対する CORS のサポート

    Note

    カスタム HTML がある場合は、<script> 要素をコピーしてご自分の HTML ページに貼り付けます。

  5. Azure portal で、[Azure AD B2C] に移動します。

  6. [ユーザー フロー] に移動します。

  7. ユーザー フローを選択します。

  8. [Page layouts](ページ レイアウト) を選択します。

  9. [ローカル アカウントのサインアップ ページ レイアウト] を選択します。

  10. [カスタム ページ コンテンツを使用する] で、[はい] を選択します。

  11. [カスタム ページ コンテンツを使用する] に、カスタム HTML URI を貼り付けます。

  12. (省略可能) ソーシャル ID プロバイダーを使用する場合は、[ソーシャル アカウントのサインアップ ページ] について手順を繰り返します。

    [ページ レイアウト] の [レイアウト名] のオプションと [ソーシャル アカウントのサインアップ ページ] のオプションのスクリーンショット。

  13. ユーザー フローから、[プロパティ] に移動します。

  14. [JavaScript を有効にする] を選択します。

詳細情報: Azure Active Directory B2C における JavaScript とページ レイアウトのバージョンの有効化

API を作成してデプロイする

このセクションでは、Visual Studio Code を使用して Azure Functions をデプロイすることを前提としています。 デプロイには、Azure portal、ターミナル、またはコマンド プロンプトを使用できます。

Visual Studio Marketplace にアクセスして、Azure Functions for Visual Studio Code をインストールします。

API をローカルで実行する

  1. Visual Studio Code の左側のナビゲーションで、Azure 拡張機能に移動します。
  2. ローカルの Azure 関数用の [ローカル プロジェクト] フォルダーを選択します。
  3. F5 キーを押すか、[デバッグ]>[デバッグ開始] を選択します。 このコマンドでは、Azure 関数によって作成されたデバッグ設定が使用されます。
  4. Azure 関数によって、ローカル開発用のファイルが生成され、必要に応じて依存関係と Function Core ツールがインストールされます。
  5. Visual Studio Code の [ターミナル] パネルに、Functions Core ツールからの出力が表示されます。
  6. ホストが起動したら、出力内のローカル URL を Alt キーを押しながらクリックします。
  7. ブラウザーが開き、関数が実行されます。
  8. Azure Functions エクスプローラーで、関数を右クリックして、ローカルにホストされている関数の URL を表示します。

環境変数を追加する

このセクションのサンプルでは、HTTP 基本認証を使用する場合に Web API エンドポイントを保護します。 詳細については、インターネット エンジニアリング タスク フォースの「RFC 7617: 基本認証」のページを参照してください。

ユーザー名とパスワードは、リポジトリの一部としてではなく、環境変数として格納されます。 詳細については、「Azure Functions をローカルでコーディングしてテストする」の「ローカル設定ファイル」を参照してください。

  1. ルート フォルダー内に local.settings.json ファイルを作成します。
  2. 次のコードをコピーし、そのファイルに貼り付けます。
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "BASIC_AUTH_USERNAME": "<USERNAME>",
    "BASIC_AUTH_PASSWORD": "<PASSWORD>",
    "ARKOSE_PRIVATE_KEY": "<ARKOSE_PRIVATE_KEY>",
    "B2C_EXTENSIONS_APP_ID": "<B2C_EXTENSIONS_APP_ID>"
  }
}
  1. BASIC_AUTH_USERNAMEBASIC_AUTH_PASSWORD は、Azure 関数に対する API 呼び出しを認証するための資格情報です。 値を選択します。
  • <ARKOSE_PRIVATE_KEY> は、Arkose Labs プラットフォームで生成したサーバー側のシークレットです。
    • これは、Arkose Labs サーバー側の検証 API を呼び出して、フロントエンドによって生成された ArkoseSessionToken の値を検証します。
    • サーバー側の手順」を参照してください。
  • <B2C_EXTENSIONS_APP_ID> は、ディレクトリにカスタム属性を格納するために Azure AD B2C によって使用されるアプリケーション ID です。
  1. [アプリの登録] に移動します。

  2. b2c-extensions-app を探します。

  3. [概要] ペインから [アプリケーション (クライアント) ID] をコピーします。

  4. - 文字を削除します。

    [アプリの登録] の表示名、アプリケーション ID、作成日のスクリーンショット。

アプリケーションを Web にデプロイする

  1. Azure 関数をクラウドにデプロイします。 詳細については、Azure Functions のドキュメントを参照してください。

  2. Azure 関数のエンドポイント Web URL をコピーします。

  3. デプロイしたら、[設定のアップロード] オプションを選択します。

  4. 環境変数が App Service のアプリケーション設定にアップロードされます。 詳細については、「Azure のアプリケーション設定」を参照してください。

    Note

    お使いの関数アプリを管理できます。 Visual Studio Code での Azure Functions の開発については、「プロジェクト ファイルのデプロイ」も参照してください。

API コネクタを構成して有効にする

  1. API コネクタを作成します。 「API コネクタをサインアップ ユーザー フローに追加する」を参照してください。

  2. ユーザー フローに対してそれを有効にします。

    [API コネクタの構成] の [表示名]、[エンドポイント URL]、[ユーザー名]、[パスワード] のスクリーンショット。

  • エンドポイント URL - Azure 関数をデプロイしたときにコピーした関数の URL
  • ユーザー名 - 定義したユーザー名
  • パスワード - 定義したパスワード
  1. ユーザー フローの [API コネクタ] の設定で、[ユーザーを作成する前] に呼び出される API コネクタを選択します。

  2. API によって ArkoseSessionToken 値が検証されます。

    [API コネクタ] の [ユーザーを作成する前に] のエントリのスクリーンショット。

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

  1. Azure AD B2C テナントを開きます。
  2. [ポリシー][ユーザー フロー] を選択します。
  3. 作成したユーザー フローを選択します。
  4. [ユーザー フローを実行します] を選択します。
  5. [アプリケーション] で、登録済みのアプリを選択します (JWT など)。
  6. [応答 URL] で、リダイレクト URL を選択します。
  7. [ユーザー フローを実行します] を選択します。
  8. サインアップ フローを実行します。
  9. アカウントを作成します。
  10. サインアウトします。
  11. サインイン フローを実行します。
  12. [続行] をクリックします。
  13. Arkose Labs のパズルが表示されます。

リソース