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

この記事では、Microsoft Entra ID のカスタム認証拡張機能の概要について説明します。 カスタム認証拡張機能を使用すると、外部システムと統合することで、Microsoft Entra 認証エクスペリエンスをカスタマイズできます。

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

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

  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 への要求には、イベント、ユーザー プロファイル、認証要求データ、およびその他のコンテキスト情報に関する情報が含まれています。

任意のプログラミング言語、フレームワーク、ホスティング環境を使用して、カスタム拡張機能 REST API を作成してホストできます。 手っ取り早く始めるには、C# Azure 関数を使用します。 Azure Functions を使用すると、最初に仮想マシン (VM) を作成したり、Web アプリケーションを発行したりしなくても、サーバーレス環境でコードを実行できます。

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

  • REST API 呼び出しをセキュリティで保護するためのトークン検証。
  • ビジネス ロジック
  • HTTP 要求スキーマと応答スキーマの受信と送信の検証。
  • 監査とログ記録。
  • 可用性、パフォーマンス、およびセキュリティの制御。

Azure Functions で REST API を実行する開発者の場合は、 Microsoft.Azure.WebJobs.Extensions.AuthenticationEvents NuGet ライブラリを使用することを検討してください。これは、Microsoft Azure の組み込み認証機能を使用したトークン検証の実装に役立ちます。 さまざまなイベントの種類のデータ モデルを提供し、受信と送信の要求と応答の処理を開始するため、ビジネス ロジックにより焦点を当てることができます。

REST API を保護する

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

  1. カスタム認証拡張機能が REST API を呼び出すと、Microsoft Entra ID によって発行されたベアラー トークンを含む HTTP Authorization ヘッダーが送信されます。
  2. ベアラー トークンには、appid または azp 要求が含まれています。 それぞれの要求に 99045fe1-7639-4a75-9d4a-577b6ca3810f 値が含まれていることを検証します。 この値により、REST API を呼び出すのが Microsoft Entra ID であることが保証されます。
    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

カスタム クレーム プロバイダー

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

カスタム クレーム プロバイダーの詳細について学習します。

属性コレクションの開始イベントと送信イベント

属性コレクションの開始イベントと送信イベントは、ユーザーから属性を収集する前後に、ロジックを追加するためのカスタム認証拡張機能と併せて使うことができます。 たとえば、サインアップ時にユーザーが入力した属性を検証するワークフローを追加することができます。 OnAttributeCollectionStart イベントは、属性コレクション ステップの開始時、かつ属性コレクション ページがレンダリングされる前に発生します。 これにより、値の事前入力やブロック エラーの表示などのアクションを追加できます。 OnAttributeCollectionSubmit イベントは、ユーザーが属性を入力して送信した後にトリガーします。これにより、入力の検証や属性の変更などのアクションを追加できます。

Note

属性コレクションの開始イベントと送信イベントは、現在、顧客向けの Microsoft Entra 外部 ID のユーザー フローでのみ使うことができます。 詳細については、独自のビジネス ロジックの追加に関する記事を参照してください。

関連項目