Freigeben über


Autorisieren von Anforderungen an Azure SignalR Service-Ressourcen mit von Microsoft Entra verwalteten Identitäten

Azure SignalR Service unterstützt Microsoft Entra ID zum Autorisieren von Anforderungen mit von Microsoft Entra verwalteten Identitäten.

In diesem Artikel wird erläutert, wie Sie Ihre Azure SignalR Service-Ressource und Ihren Code so konfigurieren, dass Anforderungen an die Ressource mit einer verwalteten Identität autorisiert werden.

Konfigurieren von verwalteten Identitäten

Der erste Schritt besteht darin, verwaltete Identitäten zu konfigurieren.

In diesem Beispiel wird gezeigt, wie Sie mithilfe des Azure-Portals eine systemseitig zugewiesene verwaltete Identität auf einem App Service konfigurieren:

  1. Greifen Sie auf die Einstellungen Ihrer App im Azure-Portal unter der Gruppe Einstellungen im linken Navigationsbereich zu.

  2. Wählen Sie Identität aus.

  3. Ändern Sie auf der Registerkarte Systemseitig zugewiesen den Status in Ein. Klicken Sie auf Speichern.

    Screenshot, der zeigt, wo Sie den Status in „Ein“ ändern und „Speichern“ auswählen

Weitere Informationen für andere Wege, verwaltete Identitäten für Azure App Service und Azure Functions zu konfigurieren, finden Sie unter Verwenden verwalteter Identitäten für App Service und Azure Functions.

Um mehr über die Konfiguration verwalteter Identitäten auf einer Azure-VM zu erfahren, lesen Sie Konfigurieren von verwalteten Identitäten auf Azure-VMs.

Verwalten von Rollenzuweisungen im Azure-Portal

In den folgenden Schritten wird beschrieben, wie Sie einer systemseitig zugewiesenen Identität eine SignalR-App-Serverrolle über eine Azure SignalR Service-Ressource zuweisen. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Hinweis

Eine Rolle kann einem beliebigen Bereich zugewiesen werden, einschließlich Verwaltungsgruppe, Abonnement, Ressourcengruppe oder einer einzelnen 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 Zugriffssteuerung (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.

  5. Wählen Sie auf der Registerkarte Mitglieder die Option Verwaltete Identität und dann Mitglieder auswählen aus.

  6. Wählen Sie Ihr Azure-Abonnement.

  7. Wählen Sie die systemseitig zugewiesene verwaltete Identität aus, suchen Sie nach einer VM, der Sie die Rolle zuweisen möchten, und wählen Sie sie aus.

  8. Wählen Sie auf der Registerkarte Überprüfen und zuweisen die Option Überprüfen und zuweisen aus, um die Rolle zuzuweisen.

Wichtig

Die Verteilung von Azure-Rollenzuweisungen kann bis zu 30 Minuten dauern.

Weitere Informationen zur Zuweisung und Verwaltung von Azure-Rollen finden Sie in diesen Artikeln:

Konfigurieren Ihrer App

App-Server

Eine systemseitig zugewiesene Identität verwenden

Das Azure SignalR SDK unterstützt identitätsbasierte Verbindungszeichenfolgen. Wenn die Konfiguration in den Umgebungsvariablen des App-Servers festgelegt ist, müssen Sie den App-Server nicht erneut bereitstellen, sondern einfach eine Konfigurationsänderung vornehmen, um von Zugriffsschlüsseln zu MSI zu migrieren. Ändern Sie beispielsweise die Umgebungsvariable Ihres App-Servers von Azure__SignalR__ConnectionString in Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;. Oder legen Sie sie im DI-Code fest.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");

Außerdem können Sie entweder DefaultAzureCredential oder ManagedIdentityCredential verwenden, um Ihre Azure SignalR Service-Endpunkte zu konfigurieren. Die direkte Verwendung von ManagedIdentityCredential hat sich jedoch bewährt.

Beachten Sie, dass die systemseitig zugewiesene verwaltete Identität standardmäßig verwendet wird. Stellen Sie jedoch sicher, dass Sie keine Umgebungsvariablen konfigurieren, die von EnvironmentCredential beibehalten wurden, wenn Sie DefaultAzureCredential verwenden. Andernfalls greift Azure SignalR Service für die Anforderung auf EnvironmentCredential zurück, was in der Regel zu einer Unauthorized-Antwort führt.

Wichtig

Entfernen Sie Azure__SignalR__ConnectionString, wenn Umgebungsvariablen auf diese Weise bereitgestellt wurden. Azure__SignalR__ConnectionString wird verwendet, um standardmäßige ServiceEndpoint-Elemente mit oberster Priorität zu erstellen. Dies führt u. U. dazu, dass Ihr App-Server unerwarteterweise Zugriffsschlüssel verwendet.

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

Verwenden einer benutzerseitig zugewiesenen Identität

Geben Sie ClientId bei der Erstellung des ManagedIdentityCredential Objekts an.

Wichtig

Verwenden Sie die Client-ID, nicht die Objekt-ID (Prinzipal), auch wenn beide GUIDs sind.

Verwenden Sie eine identitätsbasierte Verbindungszeichenfolge.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");

Oder erstellen Sie ServiceEndpoint mit ManagedIdentityCredential.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource1>.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: