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. [システム割り当て済み] タブで、 [状態][オン] に切り替えます。 [保存] を選択します。

    Add a system-assigned identity in the portal

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

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

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

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

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

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

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

    Add a user-assigned identity in the portal

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

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

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

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

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

    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 アプリを構成する」を参照してください。

    Screenshot that shows basic information for adding an identity provider.

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

  8. Azure SignalR Service で [アップストリームの設定] に移動し、[マネージド ID の使用] を選び、[既存のアプリケーションから選択] を選びます。 以前に作成したアプリケーションを選びます。

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

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

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

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>)} という構文を使用します。

次のステップ