次の方法で共有


カスタム認証拡張機能の概要

Microsoft Entra ID 認証パイプラインは、ユーザー資格情報の検証、条件付きアクセス ポリシー、多要素認証、セルフサービス パスワード リセットなど、いくつかの組み込みの認証イベントで構成されます。

Microsoft Entra カスタム認証拡張機能を使用すると、認証フロー内の特定のポイントで独自のビジネス ロジックを使用して認証フローを拡張できます。 カスタム認証拡張機能は、基本的にイベント リスナーであり、アクティブ化されると、ワークフロー アクションを定義する REST API エンドポイントへの HTTP 呼び出しを行います。

たとえば、カスタム クレーム プロバイダーを使用して、トークンが発行される前に外部ユーザー データをセキュリティ トークンに追加できます。 属性コレクション ワークフローを追加して、サインアップ時にユーザーが入力した属性を検証できます。 この記事では、Microsoft Entra ID カスタム認証拡張機能の概要について説明します。

Microsoft Entra カスタム認証拡張機能の概要ビデオでは、カスタム認証拡張機能の主な機能の概要を説明します。

コンポーネントの概要

構成する必要があるコンポーネントは 2 つあります。Microsoft Entra のカスタム認証拡張機能と REST API です。 カスタム認証拡張機能は、REST API エンドポイント、REST API を呼び出すタイミング、および REST API を呼び出す資格情報を指定します。

このビデオでは、Microsoft Entra カスタム認証拡張機能の構成について詳しく説明し、最適な実装のためのベスト プラクティスと貴重なヒントを提供します。

Sign-in flow

次の図は、カスタム認証拡張機能と統合されたサインイン フローを示しています。

外部ソースからの要求で拡張されているトークンを示す図。

  1. ユーザーがアプリにサインインしようとすると、Microsoft Entra サインイン ページにリダイレクトされます。
  2. ユーザーが認証で特定の手順を完了すると、イベント リスナーがトリガーされます。
  3. カスタム認証拡張機能は、REST API エンドポイントに HTTP 要求を送信します。 要求には、イベント、ユーザー プロファイル、セッション データ、およびその他のコンテキスト情報に関する情報が含まれています。
  4. REST API はカスタム ワークフローを実行します。
  5. REST API は Microsoft Entra ID に HTTP 応答を返します。
  6. Microsoft Entra のカスタム拡張機能は応答を処理し、イベントの種類と HTTP 応答ペイロードに基づいて認証をカスタマイズします。
  7. アプリトークンが返されます。

REST API エンドポイント

イベントがトリガーされると、Microsoft Entra ID は所有する REST API エンドポイントを呼び出します。 REST API にはパブリックにアクセスできる必要があります。 これは、Azure Functions、Azure App Service、Azure Logic Apps、または他のパブリックに利用可能な API エンドポイントを使用してホストできます。

REST API の開発とデプロイには、任意のプログラミング言語、フレームワーク、またはコードなしのコードなしのソリューション (Azure Logic Apps など) を柔軟に使用できます。 簡単な方法で作業を開始するには、Azure 関数の使用を検討してください。 これにより、最初に仮想マシン (VM) を作成したり、Web アプリケーションを発行したりする必要なく、サーバーレス環境でコードを実行できます。

REST API で次の処理を行う必要があります。

このビデオでは、コードを記述せずに、Azure Logic Apps で認証拡張機能 REST API エンドポイントを作成する方法について説明します。 Azure Logic App を使用すると、ユーザーはビジュアル デザイナーを使用してワークフローを構築できます。 このビデオでは、検証メールのカスタマイズについて説明し、カスタム要求プロバイダーを含むすべての種類のカスタム認証拡張機能に適用されます。

要求ペイロード

REST API への要求には、イベント、ユーザー プロファイル、認証要求データ、およびその他のコンテキスト情報に関する詳細を含む JSON ペイロードが含まれています。 JSON ペイロード内の属性を使用して、API でロジックを実行できます。

たとえば、 トークン発行開始 イベントでは、要求ペイロードにユーザーの一意識別子が含まれる場合があり、独自のデータベースからユーザー プロファイルを取得できます。 要求ペイロード データは、イベント ドキュメントで指定されているスキーマに従う必要があります。

データとアクションの種類を返す

Web API は、ビジネス ロジックを使用してワークフローを実行した後、認証プロセスの続行方法を Microsoft Entra に指示する アクションの種類 を返す必要があります。

たとえば、 属性コレクションの開始 イベントと 属性コレクション送信 イベントの場合、Web API によって返される アクションの種類 は、アカウントをディレクトリに作成できるか、検証エラーを表示できるか、サインアップ フローを完全にブロックできるかを示します。

REST API 応答には、データが含まれる場合があります。 たとえば、 on トークン発行開始 イベントでは、セキュリティ トークンにマップできる一連の属性を提供できます。

REST API を保護する

カスタム認証拡張機能と REST API 間の通信を適切にセキュリティで保護するには、複数のセキュリティ制御を適用する必要があります。

  1. カスタム認証拡張機能が REST API を呼び出すと、Microsoft Entra ID によって発行されたベアラー トークンを含む HTTP Authorization ヘッダーが送信されます。
  2. ベアラー トークンには、appid または azp 要求が含まれています。 それぞれの要求に 99045fe1-7639-4a75-9d4a-577b6ca3810f 値が含まれていることを検証します。 この値により、Microsoft Entra ID で REST API が確実に呼び出されます。
    1. V1 アプリケーションの場合は、appid 要求を検証します。
    2. V2 アプリケーションの場合は、azp 要求を検証します。
  3. ベアラー トークン aud 対象ユーザー要求には、関連付けられているアプリケーション登録の ID が含まれています。 REST API エンドポイントでは、その特定の対象ユーザーに対してベアラー トークンが発行されていることを検証する必要があります。
  4. ベアラー トークン iss 発行者のクレームには、Microsoft Entra 発行者の URL が含まれています。 テナントの構成に応じて、発行者の URL は次のいずれかになります。
    • 従業員: https://login.microsoftonline.com/{tenantId}/v2.0
    • お客様: https://{domainName}.ciamlogin.com/{tenantId}/v2.0

カスタム認証イベントの種類

このセクションでは、Microsoft Entra ID の従業員と外部テナントで使用できるカスタム認証拡張機能イベントの一覧を示します。 イベントの詳細については、それぞれのドキュメントを参照してください。

出来事 従業員テナント 外部テナント
トークン発行の開始
属性コレクションの開始
属性コレクションの送信
ワンタイム パスコード送信

トークン発行の開始

トークン発行開始イベント OnTokenIssuanceStart は、トークンがアプリケーションに発行されるときにトリガーされます。 これは、 カスタム クレーム プロバイダー内で設定されるイベントの種類です。 カスタム クレーム プロバイダーは、REST API を呼び出して外部システムから要求をフェッチするカスタム認証拡張機能です。 カスタム クレーム プロバイダーは、外部システムからのクレームをトークンにマップします。また、プロバイダーはディレクトリ内の 1 つまたは複数のアプリケーションに割り当てることができます。

ヒント

今すぐ試す

この機能を試すには、Woodgrove Groceries デモにアクセスし、"REST API からセキュリティ トークンにクレームを追加する" ユース ケースを開始してください。

属性コレクションの開始

属性コレクションの開始 イベントをカスタム認証拡張機能と共に使用して、ユーザーから属性を収集する前にロジックを追加できます。 OnAttributeCollectionStart イベントは、属性収集ページがレンダリングされる前の、属性収集ステップの開始時に発生します。 このイベントにより、値の事前入力やブロッキング エラーの表示などのアクションを追加できます。

ヒント

今すぐ試す

この機能を試すには、Woodgrove Groceries のデモにアクセスし、"サインアップ属性の事前入力" ユース ケースを開始します。

属性コレクションを提出する

属性コレクションの送信 イベントは、カスタム認証拡張機能と共に使用して、ユーザーから属性を収集した後にロジックを追加できます。 OnAttributeCollectionSubmit イベントは、ユーザーが属性を入力して送信した後にトリガーされ、エントリの検証や属性の変更などのアクションを追加できます。

ヒント

今すぐ試す

この機能を試すには、Woodgrove Groceries のデモにアクセスし、"サインアップ属性の検証" ユース ケースまたは "ユーザーがサインアップ プロセスを続行できないようにする" ユース ケースを開始します。

ワンタイムパスコードを送信する

OnOtpSend イベントは、ワンタイム パスコード電子メールがアクティブになるとトリガーされます。 REST API を呼び出して、独自の電子メール プロバイダーを使用できます。 このイベントを使用すると、メール アドレスでサインアップする、メールワンタイム パスコード (電子メール OTP) でサインインする、メール OTP を使用してパスワードをリセットする、または多要素認証 (MFA) に電子メール OTP を使用するユーザーに、カスタマイズされた電子メールを送信できます。

OnOtpSend イベントがアクティブになると、Microsoft Entra は、所有する指定した REST API にワンタイム パスコードを送信します。 その後、REST API は、選択した電子メール プロバイダー (Azure Communication Service や SendGrid など) を使用して、アドレス、電子メールの件名からカスタム電子メール テンプレートを使用してワンタイム パスコードを送信し、ローカライズもサポートします。

ヒント

今すぐ試す

この機能を試すには、Woodgrove Groceries デモにアクセスし、"ワンタイム コードにカスタム メール プロバイダーを使用する" ユース ケースを開始してください。