Teilen über


Autorisieren von Anforderungen an Azure SignalR-Ressourcen mit verwalteten Identitäten für Azure-Ressourcen

Azure SignalR Service unterstützt Microsoft Entra ID zum Autorisieren von Anforderungen aus verwalteten Identitäten für Azure-Ressourcen.

In diesem Artikel wird erläutert, wie Sie Ihre Ressource und Ihren Code einrichten, um Anforderungen an die Ressource mithilfe einer verwalteten Identität zu autorisieren.

Konfigurieren von verwalteten Identitäten

Der erste Schritt besteht darin, verwaltete Identitäten auf Ihrer App oder Ihrem virtuellen Computer zu konfigurieren.

Verwalten von Rollenzuweisungen im Azure-Portal

Die folgenden Schritte beschreiben, wie Sie einem Dienstprinzipal oder einer verwalteten Identität für eine Azure SignalR Service-Ressource eine SignalR-App-Serverrolle zuweisen. Ausführliche Schritte finden Sie unter Zuweisen von Azure-Rollen mithilfe des Azure-Portals.

Hinweis

Sie können einem beliebigen Bereich eine Rolle zuweisen, einschließlich Verwaltungsgruppe, Abonnement, Ressourcengruppe oder einzelner Ressource. Weitere Informationen zum Geltungsbereich finden Sie unter Grundlegendes zu Azure RBAC.

  1. Wechseln Sie im Azure-Portal zu Ihrer Azure SignalR Service-Ressource.

  2. Wählen Sie im linken Fensterbereich die Option Zugriffskontrolle (IAM) aus.

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen.

    Screenshot der Seite für die Zugriffssteuerung und der Auswahl zum Hinzufügen einer Rollenzuweisung.

  4. Wählen Sie auf der Registerkarte Rolle die Option SignalR-App-Server aus. Andere integrierte Azure SignalR-Dienstrollen hängen von Ihrem Szenario ab.

    Rolle Description Anwendungsfall
    SignalR-App-Server Zugriff auf die APIs, die Serververbindungen erstellen und Schlüssel generieren. Wird am häufigsten für einen App-Server mit einer Azure SignalR-Ressource verwendet, die im Standardmodus ausgeführt wird.
    SignalR-Dienstbesitzer Vollzugriff auf alle Datenebenen-APIs, einschließlich REST-APIs, die APIs, die Serververbindungen erstellen, und die APIs, die Schlüssel/Token generieren. Wird für einen Aushandlungsserver mit einer Azure SignalR Service-Ressource verwendet, die im Serverless-Modus ausgeführt wird. Sie erfordert sowohl REST-API-Berechtigungen als auch Authentifizierungs-API-Berechtigungen.
    Besitzer der SignalR-REST-API Vollständiger Zugriff auf REST-APIs der Datenebene. Wird für das Azure SignalR Management SDK zum Verwalten von Verbindungen und Gruppen verwendet, macht jedoch keine Serververbindungen oder verarbeitet Aushandlungsanforderungen.
    SignalR-REST-API-Reader Schreibgeschützter Zugriff auf REST-APIs der Datenebene. Wird verwendet, wenn Sie ein Überwachungstool entwickeln, das nur-lesende REST-APIs aufruft.
  5. Wählen Sie Weiteraus.

  6. Für die Microsoft Entra-Anwendung:

    1. Wählen Sie in der Zeile "Zugriff zuweisen " die Option "Benutzer", "Gruppe" oder "Dienstprinzipal" aus.
    2. Wählen Sie in der Zeile Mitglieder die Option Mitglieder auswählen und dann im Pop-up-Fenster die Identität aus.
  7. Für verwaltete Identität für Azure-Ressourcen:

    1. Wählen Sie in der Zeile "Zugriff zuweisen " die Option "Verwaltete Identität" aus.
    2. Wählen Sie in der Zeile Mitglieder die Option Mitglieder auswählen und dann im Pop-up-Fenster die Anwendung aus.
  8. Wählen Sie Weiteraus.

  9. Überprüfen Sie Ihre Aufgabe, und wählen Sie dann "Überprüfen+ Zuweisen " aus, um die Rollenzuweisung zu bestätigen.

Wichtig

Neu hinzugefügte Rollenzuweisungen können bis zu 30 Minuten dauern, bis sie verteilt werden.

Weitere Informationen zum Zuweisen und Verwalten von Azure-Rollen finden Sie unter:

Konfigurieren des Microsoft.Azure.SignalR-App-Server-SDKs für C#

Azure SignalR-Server-SDK für C#

Das Azure SignalR-Server-SDK nutzt die Azure.Identity-Bibliothek , um Token für die Verbindung mit Ressourcen zu generieren. Klicken Sie hier, um detaillierte Verwendungen zu erkunden.

Verwenden der vom System zugewiesenen Identität

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

Verwenden der vom Benutzer zugewiesenen Identität

Wichtig

Verwenden der Client-ID, nicht der Objekt-ID (Prinzipal-ID)

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-assigned-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
    };
});

Weitere Beispiele finden Sie unter diesem Beispiellink.

Verwenden mehrerer Endpunkte

Zugangsdaten können für verschiedene Endpunkte unterschiedlich sein.

In diesem Beispiel stellt das Azure SignalR SDK eine Verbindung zu resource1 mit der vom System zugewiesenen verwalteten Identität her und eine Verbindung zu resource2 mit der vom Benutzer zugewiesenen verwalteten Identität.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-assigned-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
    };
});

Azure SignalR Service-Bindungen in Azure Functions

Azure SignalR Service-Bindungen in Azure Functions verwenden Anwendungseinstellungen im Portal oder local.settings.json lokal, um eine verwaltete Identität für den Zugriff auf Ihre Azure SignalR Service-Ressourcen zu konfigurieren.

Sie benötigen möglicherweise eine Gruppe von Schlüssel-Wert-Paaren, um eine Identität zu konfigurieren. Die Schlüssel aller Schlüssel-Wert-Paare müssen mit einem Verbindungsnamenpräfix (Standardwert ist AzureSignalRConnectionString) und einem Trennzeichen beginnen. Das Trennzeichen ist im Portal ein Unterstrich (__) und lokal ein Doppelpunkt (:). Sie können das Präfix mithilfe der Bindungseigenschaft ConnectionStringSetting anpassen.

Eine systemseitig zugewiesene Identität verwenden

Wenn Sie nur den Dienst-URI konfigurieren, verwenden Sie die DefaultAzureCredential-Klasse. Diese Klasse ist nützlich, wenn Sie in Azure und in der lokalen Entwicklungsumgebung dieselbe Konfiguration verwenden möchten. Weitere Informationen zur Funktionsweise finden Sie unter DefaultAzureCredential.

Verwenden Sie im Azure-Portal das folgende Beispiel, um DefaultAzureCredential zu konfigurieren. Wenn Sie keine dieser Umgebungsvariablen konfigurieren, wird die systemseitig zugewiesene Identität für die Authentifizierung verwendet.

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

Im Folgenden finden Sie ein Konfigurationsbeispiel für DefaultAzureCredential in der Datei local.settings.json. Im lokalen Geltungsbereich gibt es keine verwaltete Identität. Die Authentifizierung über Visual Studio-, Azure CLI- und Azure PowerShell-Konten wird in dieser Reihenfolge versucht.

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

Wenn Sie die systemseitig zugewiesene Identität unabhängig und ohne den Einfluss von anderen Umgebungsvariablen verwenden möchten, sollten Sie den Schlüssel credential mit dem Verbindungsnamenpräfix managedidentity festlegen. Dies ist ein Beispiel für Anwendungseinstellungen:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity

Verwenden einer benutzerseitig zugewiesenen Identität

Wenn Sie eine benutzerseitig zugewiesene Identität verwenden möchten, müssen Sie zusätzlich zu den Schlüsseln serviceUri und credential zusammen mit dem Verbindungsnamenpräfix auch clientId zuweisen. Dies ist ein Beispiel für Anwendungseinstellungen:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>

Nächste Schritte

Weitere Informationen finden Sie in den folgenden verwandten Artikeln: