Azure SignalR Service では、Microsoft Entra ID のマネージド ID を使用して、次のことができます。
- アクセス トークンを取得します。
- Azure Key Vault のシークレットにアクセスします。
サービスでサポートされるマネージド ID は 1 つだけです。 システム割り当て ID またはユーザー割り当て ID を作成できます。 システム割り当て ID は、Azure SignalR Service インスタンス専用であり、インスタンスを削除すると削除されます。 ユーザー割り当て ID は、Azure SignalR Service リソースとは別に管理されます。
この記事では、Azure SignalR Service のマネージド ID を作成する方法と、それをサーバーレス シナリオで使用する方法について説明します。
Prerequisites
マネージド ID を使用するには、次のものが必要です。
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Azure SignalR Service リソース。
- アクセスしたいアップストリームリソース、例えばAzure Key Vaultリソースなど。
- Azure Functions アプリ (関数アプリ)。
Azure SignalR Service にマネージド ID を追加する
マネージド ID は、Azure portal または Azure CLI で Azure SignalR Service に追加できます。 この記事では、Azure portal で Azure SignalR Service にマネージド ID を追加する方法について説明します。
システム割り当て ID を追加する
システム割り当てマネージド ID を Azure SignalR Service インスタンスに追加するには:
Azure portal で、Azure SignalR Service インスタンスを参照します。
アイデンティティ を選択します。
[ システム割り当て済み ] タブで、[ 状態] を [オン] に切り替えます。
保存 を選択します。
はい を選択して、変更を確認します。
ユーザー割り当て ID を追加する
ユーザー割り当て ID を Azure SignalR Service インスタンスに追加するには、ID を作成してサービスに追加する必要があります。
以下の手順に従って、ユーザー割り当てマネージド ID リソースを作成します。
Azure portal で、Azure SignalR Service インスタンスを参照します。
アイデンティティ を選択します。
割り当てられたユーザー タブで、追加 を選択します。
[ ユーザー割り当てマネージド ID ] ドロップダウン メニューで、ID を選択します。
[] を選択し、[] を追加します。
サーバーレス シナリオでマネージド ID を使用する
Azure SignalR Service は、フル マネージド サービスです。 マネージド ID を使用してアクセス トークンを取得します。 サーバーレス シナリオでは、サービスはアップストリーム要求の Authorization ヘッダーにアクセス トークンを追加します。
アップストリーム設定でマネージド ID 認証を有効にする
システム割り当て ID またはユーザー割り当て ID を Azure SignalR Service インスタンスに追加した後、アップストリーム エンドポイント設定でマネージド ID 認証を有効にすることができます。
Azure portal で、Azure SignalR Service インスタンスを参照します。
メニューから [設定] を選択します。
サーバーレス サービス モードを選択します。
[ アップストリーム URL パターンの追加 ] テキスト ボックスに、アップストリーム エンドポイント URL パターンを入力します。 URL テンプレートの設定を参照してください。
[ アップストリーム設定を 1 つ追加] を選択し、アスタリスクを選択します。
[アップストリーム設定] で、アップストリーム エンドポイントの設定を構成します。
マネージド ID 認証の設定で、 発行されたトークンの対象ユーザーに対して、ターゲット リソースを指定できます。 リソースは、取得したアクセス トークンの
aud要求になります。これは、アップストリーム エンドポイントでの検証の一部として使用できます。 リソースは、次のいずれかの形式にすることができます。サービス プリンシパルのアプリケーション (クライアント) ID。
アプリケーション (クライアント) ID を使用する場合、アプリケーションは Azure SignalR リソースと同じテナントに存在する必要があります。 アプリケーションが別のテナントにある場合は、次の手順に従ってください。
- アプリケーションをマルチテナント アプリケーションに変換するには、Microsoft Entra ID でシングルテナント アプリ をマルチテナントに変換します。
- Microsoft Entra ID のマルチテナント アプリケーションからエンタープライズ アプリケーションを作成 し、現在のテナントにアプリケーションをプロビジョニングします。
その後、"または既存のアプリケーションから選択" をクリックしてエンタープライズ アプリケーションを見つけることができます。
サービス プリンシパルのアプリケーション ID URI。
Important
空のリソースを使用すると、実際には Microsoft Graph のトークン ターゲットが取得されます。 現在のように、Microsoft Graph はトークン暗号化を有効にしているため、アプリケーションが Microsoft Graph 以外のトークンを認証することはできません。 一般的な方法では、アップストリーム ターゲットを表すサービス プリンシパルを常に作成する必要があります。 作成したサービス プリンシパルの アプリケーション ID または アプリケーション ID URI を 設定します。
関数アプリでの認証
コードを変更せずに関数アプリのアクセス検証を簡単に設定するには、Azure portal を使用します。
Azure portal で、関数アプリに移動します。
コマンドメニューから 認証 を選択します。
[ ID プロバイダーの追加] を選択します。
[ 基本 ] タブの [ ID プロバイダー ] ドロップダウン リストで、[Microsoft] を選択 します。
要求が認証されていないときに実行するアクションで、[Microsoft Entra ID でログイン] を選択します。
既定では、新しい登録を作成するオプションが選択されています。 登録の名前を変更できます。 Microsoft Entra プロバイダーを有効にする方法の詳細については、「 Microsoft Entra ID サインインを使用するように App Service または Azure Functions アプリを構成する」を参照してください。
Azure SignalR Service に移動し、 手順 に従ってシステム割り当て ID またはユーザー割り当て ID を追加します。
Azure SignalR Service でアップストリーム 設定に移動し、[ マネージド ID の使用 ] を選択し、 既存のアプリケーションから選択します。 前に作成したアプリケーションを選択します。
これらの設定を構成すると、関数アプリはヘッダーにアクセス トークンを含まない要求を拒否します。
アクセス トークンを検証する
WebApp または Azure 関数を使用していない場合は、トークンを検証することもできます。
Authorization ヘッダー内のトークンは、Microsoft ID プラットフォーム アクセス トークンです。
アクセス トークンを検証するには、アプリで対象ユーザーと署名トークンも検証する必要があります。 これらのトークンは、OpenID 検出ドキュメントの値に対して検証する必要があります。 例については、 テナントに依存しないバージョンのドキュメントを参照してください。
Microsoft Entra ミドルウェアには、アクセス トークンを検証するための組み込み機能があります。 Microsoft ID プラットフォームのコード サンプルを参照して、選択した言語で見つけることができます。
トークン検証を処理する方法を示すライブラリとコード サンプルを利用できます。 JSON Web トークン (JWT) 検証には、いくつかのオープンソース パートナー ライブラリも使用できます。 ほぼすべてのプラットフォームと言語に少なくとも 1 つのオプションがあります。 Microsoft Entra 認証ライブラリとコード サンプルの詳細については、 Microsoft ID プラットフォーム認証ライブラリを参照してください。
Key Vault 参照にマネージド ID を使用する
Azure SignalR Service は、マネージド ID を使用して Key Vault にアクセスしてシークレットを取得できます。
- システム割り当て ID またはユーザー割り当て ID を Azure SignalR Service インスタンスに追加します。
- Key Vault のアクセス ポリシーで、マネージド ID のシークレット読み取りアクセス許可を付与します。 Azure portal を使用した Key Vault アクセス ポリシーの割り当てに関するページを参照してください。
現時点では、この機能を使用して 、アップストリーム URL パターンでシークレットを参照できます。