Azure Web PubSub サービスでのマネージド ID

この記事では、Azure Web PubSub サービス用のマネージド ID を作成する方法と、それを使用する方法について説明します。

重要

Azure Web PubSub サービスでは、1 つのマネージド ID のみをサポートできます。 つまり、システム割り当て ID とユーザー割り当て ID のどちらかを追加できます。

システム割り当て ID を追加する

Azure portal でマネージド ID を設定するには、まず Azure Web PubSub サービスのインスタンスを作成してから、この機能を有効にします。

  1. 通常どおり、ポータルで Azure Web PubSub サービスのインスタンスを作成します。 ポータルでそれに移動します。

  2. [ID] を選択します。

  3. [システム割り当て済み] タブで、 [状態][オン] に切り替えます。 [保存] を選択します。

    ポータルでシステム割り当て ID を追加する

ユーザー割り当て ID を追加する

ユーザー割り当て ID を持つ Azure Web PubSub サービスのインスタンスを作成するには、ID を作成してから、そのリソース ID をサービスに追加する必要があります。

  1. 以下の手順に従って、ユーザー割り当てマネージド ID リソースを作成します。

  2. 通常どおり、ポータルで Azure Web PubSub サービスのインスタンスを作成します。 ポータルでそれに移動します。

  3. [ID] を選択します。

  4. 割り当てられたユーザー タブで、追加 を選択します。

  5. 先ほど作成した ID を検索して選択します。 [追加] を選択します。

    ポータルでユーザー割り当て ID を追加する

クライアント イベントのシナリオでマネージド ID を使用する

Azure Web PubSub サービスはフル マネージド サービスであるため、マネージド ID を使用してトークンを手動で取得することはできません。 代わりに、Azure Web PubSub サービスにより、イベント ハンドラーにイベントを送信するときに、マネージド ID を使用してアクセス トークンが取得されます。 その後、サービスによって、http 要求の Authorization ヘッダーにアクセス トークンが設定されます。

イベント ハンドラーの設定でマネージド ID 認証を有効にする

  1. システム割り当て ID またはユーザー割り当て ID を追加します。

  2. [Hub 設定の構成] に移動し、イベント ハンドラーのアップストリームを追加または編集します。

    msi-setting

  3. [認証] セクション内で、[認証の使用] を選択し、[発行されたトークンの対象ユーザーを指定します] をオンにします。 対象ユーザーは、取得したアクセス トークン内の aud クレームになります。これは、イベント ハンドラー内の検証の一部として使用できます。 次のいずれかを選択できます。

    • 既存の Microsoft Entra アプリケーションから選びます。 選んだもののアプリケーション ID が使用されます。
    • サービス プリンシパルのアプリケーション ID URI。

    重要

    空のリソースを使用すると、Microsoft Graph をターゲットとするトークンを実際に取得します。 現在、Microsoft Graph ではトークン暗号化を有効にしているため、Microsoft Graph 以外のアプリケーションでトークンを認証することはできません。 一般的な方法では、アップストリーム ターゲットを表すサービス プリンシパルを常に作成する必要があります。 そして、作成したそのサービス プリンシパルのアプリケーション ID またはアプリケーション ID URI を設定します。

関数アプリでの認証

Azure portal を使うと、コードを変更せずに関数アプリのアクセス検証を簡単に設定できます。

  1. Azure portal で関数アプリに移動します。

  2. コマンドメニューから 認証 を選択します。

  3. [ID プロバイダーの追加] を選択します。

  4. [基本] タブの [ID プロバイダー] ドロップダウン リストで [Microsoft] を選びます。

  5. [要求が認証されない場合に実行するアクション] で、[Microsoft Entra ID でのログイン] を選びます。

  6. 既定では、新しい登録を作成するオプションが選択されています。 登録の名前を変更できます。 Microsoft Entra プロバイダーを有効にする方法の詳細については、「Microsoft Entra ID サインインを使用するように App Service アプリまたは Azure Functions アプリを構成する」を参照してください。

    ID プロバイダーを追加するための基本情報を示すスクリーンショット。

  7. Web PubSub サービスに移動し、手順に従って、システム割り当て ID またはユーザー割り当て ID を追加します。

  8. Web PubSub サービスの [設定] タブ内で、ハブの設定を編集し、イベント ハンドラーの設定を編集して、[認証] セクション内で [マネージド ID を使用する][既存のアプリケーションから選択] を選択します。 以前に作成したアプリケーションを選びます。

これらの設定を構成した後、関数アプリでは、ヘッダーにアクセス トークンがない要求が拒否されるようになります。

アクセス トークンを検証する

WebApp または Azure Functions を使用していない場合は、トークンを検証することもできます。

Authorization ヘッダー内のトークンは、Microsoft ID プラットフォームのアクセス トークンです。

アクセス トークンを検証するには、アプリで対象ユーザーと署名トークンも検証する必要があります。 これらの検証は、OpenID 探索ドキュメント内の値に対して行ってください。 たとえば、テナントに依存しないバージョンのドキュメントを確認してください。

Microsoft Entra ミドルウェアには、アクセス トークンを検証するための機能が組み込まれています。 サンプルを参照して、任意の言語で検索することができます。

トークンの検証を処理する方法を示すライブラリとコード サンプルが用意されています。 また、JSON Web Token (JWT) 検証に使用できるオープンソースのパートナー ライブラリもいくつかあります。 ほとんどすべてのプラットフォームと言語に、少なくとも 1 つのオプションがあります。 Microsoft Entra 承認ライブラリとコード サンプルの詳細については、「Microsoft ID プラットフォームの認証ライブラリ」を参照してください。

具体的には、イベント ハンドラーを使って Azure 関数または Web Apps でホストする場合は、Microsoft Entra ログインを構成するのが簡単な方法です。

Key Vault 参照にマネージド ID を使用する

Web PubSub サービスでは、Key Vault にアクセスし、マネージド ID を使用してシークレットを取得することができます。

  1. Azure Web PubSub サービス用のシステム割り当て ID またはユーザー割り当て ID を追加します。

  2. Key Vault のアクセス ポリシーで、マネージド ID に対する読み取りアクセス許可をシークレットに付与します。 Azure portal を使用した Key Vault アクセス ポリシーの割り当てに関する説明を参照してください

現在、この機能は次のシナリオで使用できます。

  • イベント ハンドラー URL テンプレートの設定で KeyVault からシークレットを取得するには、{@Microsoft.KeyVault(SecretUri=<secret-identity>)} という構文を使用します。

次のステップ