次の方法で共有


Microsoft Entra アプリケーションを使用して Azure SignalR Service リソースへの要求を承認する

Azure SignalR Service では、Microsoft Entra アプリケーションからの要求を承認するための Microsoft Entra ID がサポートされています。

この記事では、Azure SignalR Service リソースとコードを構成して、Microsoft Entra アプリケーションからリソースへの要求を承認する方法について説明します。

アプリケーションを登録する

最初の手順として、Microsoft Entra アプリケーションを登録します。

  1. Azure portal で、Microsoft Entra ID を探して選択します。

  2. [管理][アプリの登録] を選択します。

  3. 新規登録を選択します。 [アプリケーションの登録] ペインが開きます。

    Screenshot of the pane for registering an application.

  4. [名前] に、アプリケーションの表示名を入力します。

  5. [登録] を選択して、登録を確定します。

アプリケーションを登録すると、アプリケーションの概要ページでアプリケーション (クライアント) IDディレクトリ (テナント) ID の値を確認できるようになります。 これらの GUID は、次の手順で役に立ちます。

Screenshot of overview information for a registered application.

アプリケーションの登録方法について詳しくは、「クイックスタート: Microsoft ID プラットフォームにアプリケーションを登録する」をご覧ください。

資格情報の追加

証明書とクライアント シークレット (文字列) の両方を資格情報として Confidential クライアント アプリの登録に追加できます。

クライアント シークレット

アプリケーションでは、トークンを要求するときに ID を証明するためにクライアント シークレットが必要です。 クライアント シークレットを作成するには、次の手順を実行します。

  1. [管理] で、[証明書とシークレット] を選択します。

  2. [クライアント シークレット] タブで、[新しいクライアント シークレット] を選択します。

    Screenshot of selections for creating a client secret.

  3. クライアント シークレットの説明を入力し、有効期限を選びます。

  4. クライアント シークレットの値をコピーし、安全な場所に貼り付けます。

    Note

    シークレットは 1 回だけ表示されます。

証明書

クライアント シークレットを作成する代わりに、証明書をアップロードすることもできます。

Screenshot of selections for uploading a certificate.

資格情報の追加の詳細については、「資格情報を追加する」を参照してください。

Azure portal でロールの割り当てを追加する

以下の手順では、Azure SignalR Service リソースのサービス プリンシパル (アプリケーション) に SignalR アプリ サーバー ロールを割り当てる方法を説明します。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

Note

ロールは、管理グループ、サブスクリプション、リソース グループ、または 1 つのリソースを含む任意のスコープに割り当てることができます。 スコープの詳細については、「Azure RBAC のスコープについて」を参照してください。

  1. Azure portal で、Azure SignalR Service リソースに移動します。

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加]>[ロール割り当ての追加] の順に選択します。

    Screenshot that shows the page for access control and selections for adding a role assignment.

  4. [ロール] タブで、[SignalR App Server]\(SignalR アプリ サーバー\) を選択します。

  5. [メンバー] タブで、[ユーザー、グループ、またはサービス プリンシパル] を選んでから、[メンバーの選択] を選びます。

  6. ロールを割り当てるアプリケーションを探して選びます。

  7. [確認と 割り当て] タブで、 [確認と割り当て] を選択して ロールを割り当てます。

重要

Azure ロールの割り当ての反映には最大で 30 分かかる可能性があります。

Azure ロールを割り当てて管理する方法の詳細については、次の記事を参照してください。

アプリの構成

アプリ サーバー

環境変数に ID と資格情報を構成することをお勧めします。

Variable 説明
AZURE_TENANT_ID Microsoft Entra テナント ID。
AZURE_CLIENT_ID テナント内のアプリの登録のクライアント (アプリケーション) ID。
AZURE_CLIENT_SECRET アプリの登録で生成されたクライアント シークレット。
AZURE_CLIENT_CERTIFICATE_PATH PEM または PFX 形式の証明書と秘密キーのペアへのパス。これは、アプリ登録の認証に使用されます。
AZURE_USERNAME Microsoft Entra ユーザー アカウントのユーザー名 (ユーザー プリンシパル名 (UPN) とも呼ばれる)。
AZURE_PASSWORD Microsoft Entra ユーザー アカウントのパスワード。 多要素認証が有効になっているアカウントでは、パスワードはサポートされません。

DefaultAzureCredential または EnvironmentCredential のいずれかを使用して、Azure SignalR Service エンドポイントを構成できます。 DefaultAzureCredential のコードは次のとおりです。

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
    };
});

EnvironmentCredential のコードは次のとおりです。

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
    };
});

DefaultAzureCredential の動作方法の詳細については、「DefaultAzureCredential クラス」を参照してください。

エンドポイント固有の資格情報を使用する

組織では、エンドポイントごとに異なる資格情報を使用することが必要になる場合があります。

このシナリオでは、ClientSecretCredential または ClientCertificateCredential を使用できます。

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");

    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
    };
});

Azure Functions における Azure SignalR Service のバインド

Azure Functions の Azure SignalR Service バインドでは、ポータルでアプリケーション設定を使用するか、ローカルで local.settings.json を使用して、Azure SignalR Service リソースにアクセスするように Microsoft Entra アプリケーション ID を構成します。

まず、Azure SignalR Service のサービス URI を指定する必要があります。 サービス URI のキーは serviceUri です。 接続名のプレフィックス (既定値は AzureSignalRConnectionString) と区切り記号で始まります。 区切り記号は、Azure portal のアンダースコア (__) と、local.settings.json ファイルのコロン (:) です。 接続名は、binding プロパティ ConnectionStringSetting を使用してカスタマイズできます。 引き続きサンプルを参照してください。

次に、事前定義済みの環境変数または SignalR 指定された変数で Microsoft Entra アプリケーション ID を構成するかどうかを選びます。

事前定義済みの環境変数に ID を構成する

事前定義済みの環境変数の一覧については、「環境変数」を参照してください。 複数のサービスがある場合は、サービスごとに ID を構成しなくて済むよう、同じアプリケーション ID を使用することをお勧めします。 他のサービスでは、これらのサービスの設定に基づいて、これらの環境変数を使用することもできます。

たとえば、クライアント シークレットの資格情報を使用するには、local.settings.json ファイルで次のように ID を構成します。

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "AZURE_CLIENT_ID": "...",
    "AZURE_CLIENT_SECRET": "...",
    "AZURE_TENANT_ID": "..."
  }
}

Azure portal で、次のように設定を追加します。

 <CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...

SignalR 指定された変数での ID の構成

SignalR 指定された変数は、serviceUri キーと同じキー プレフィックスを共有します。 使用する可能性がある変数は、次のとおりです。

  • clientId
  • clientSecret
  • tenantId

local.settings.json ファイルでクライアント シークレットの資格情報を使用するサンプルは次のとおりです。

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "<CONNECTION_NAME_PREFIX>:clientId": "...",
    "<CONNECTION_NAME_PREFIX>:clientSecret": "...",
    "<CONNECTION_NAME_PREFIX>:tenantId": "..."
  }
}

Azure portal で、次のように設定を追加します。

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...

次のステップ

次の関連記事を参照してください。