Teilen über


Autorisieren von Anforderungen an Azure SignalR Service-Ressourcen mit Microsoft Entra-Anwendungen

Azure SignalR Service unterstützt die Microsoft Entra-ID zur Autorisierung von Anforderungen mit Microsoft Entra-Anwendungen.

In diesem Artikel wird erläutert, wie Sie Ihre Ressource und Ihren Code zum Authentifizieren von Anforderungen an die Ressource mithilfe einer Microsoft Entra-Anwendung einrichten.

Registrieren einer Anwendung in Microsoft Entra ID

Der erste Schritt besteht darin, eine Anwendung in der Microsoft Entra-ID zu registrieren:

Nachdem Sie Ihre Anwendung registriert haben, finden Sie die Werte für die Anwendungs-ID (Client-ID) und Verzeichnis-ID (Mandanten-ID) auf der Übersichtsseite der Anwendung. Diese GUIDs sind für die folgenden Schritte hilfreich.

Screenshot der Übersichtsinformationen für eine registrierte Anwendung.

Hinzufügen von Anmeldeinformationen

Nachdem Sie eine App registriert haben, können Sie Zertifikate, geheime Clientschlüssel (eine Zeichenfolge) oder Verbundidentitätsanmeldeinformationen als Anmeldeinformationen zu Ihrer vertraulichen Client-App-Registrierung hinzufügen. Anmeldeinformationen ermöglichen es Ihrer Anwendung, sich als solche zu authentifizieren, ohne während der Laufzeit eine Benutzerinteraktion zu erfordern, und werden von vertraulichen Clientanwendungen verwendet, die auf eine Web-API zugreifen.

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 BESCHREIBUNG 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.

Hinweis

Die TenantId muss mit der TenantId des Mandanten übereinstimmen, in dem sich Ihre SignalR-Ressource befindet.

Verwenden der Microsoft Entra-Anwendung mit Zertifikat

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");

    option.Endpoints = [
      new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
    ];
});

Verwenden Sie die Microsoft Entra-Anwendung mit einem Mandantenschlüssel.

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");

    option.Endpoints = [
      new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
    ];
});

Verwenden der Microsoft Entra-Anwendung mit Verbundidentität

Wenn Ihre Organisation die Verwendung des geheimen Clientschlüssels/Zertifikats deaktiviert hat, können Sie die Anwendung so konfigurieren, dass sie einer verwalteten Identität für die Authentifizierung vertraut.

Weitere Informationen hierzu finden Sie unter Konfigurieren einer Anwendung, um einer verwalteten Identität (Vorschau) zu vertrauen.

Hinweis

Das Konfigurieren einer Anwendung, um einer verwalteten Identität zu vertrauen, ist eine Vorschaufunktion.

services.AddSignalR().AddAzureSignalR(option =>
{
    var msiCredential = new ManagedIdentityCredential("msiClientId");

    var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
    {
        // Entra ID US Government: api://AzureADTokenExchangeUSGov
        // Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
        var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
        var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
        return response.Token;
    });

    option.Endpoints = [
        new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
    ];
});

Diese Anmeldeinformationen nutzen die vom Benutzer zugewiesene verwaltete Identität, um ein clientAssertion-Token zu generieren und dieses im Austausch für ein clientToken-Token zur Authentifizierung zu verwenden.

Die appClientId und tenantId sollten die Unternehmensanwendung sein, die Sie im Mandanten der SignalR-Ressource bereitgestellt haben.

Verwenden mehrerer Endpunkte

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

In diesem Beispiel verbindet sich das Azure SignalR SDK mit resource1 mittels Clientgeheimnis und mit resource2 mittels Zertifikat.

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

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

Weitere Beispiele finden Sie unter diesem Beispiellink.

Azure SignalR Service-Bindungen in Azure Functions

Azure SignalR Service-Bindungen in Azure Functions verwenden Anwendungseinstellungen im Portal oder local.settings.json lokal, um Microsoft Entra-Anwendungsidentitäten für den Zugriff auf Ihre Azure SignalR Service-Ressourcen zu konfigurieren.

Zunächst müssen Sie den Dienst-URI des Azure SignalR Service angeben. Der Schlüssel des Dienst-URI lautet serviceUri. Sie beginnt mit einem Verbindungsnamenpräfix (Standardeinstellung AzureSignalRConnectionString) und einem Trennzeichen. Das Trennzeichen ist ein Unterstrich (__) im Azure-Portal und ein Doppelpunkt (:) in der local.settings.json-Datei. Sie können den Verbindungsnamen mithilfe der Bindungseigenschaft ConnectionStringSetting anpassen. Lesen Sie weiter, um das Beispiel zu finden.

Wählen Sie dann aus, ob Sie Ihre Microsoft Entra-Anwendungsidentität in vordefinierten Umgebungsvariablen oder in SignalR-spezifizierten Variablen konfigurieren möchten.

Konfigurieren einer Identität in vordefinierten Umgebungsvariablen

Eine Liste der vordefinierten Umgebungsvariablen finden Sie unter Umgebungsvariablen. Wenn Sie über mehrere Dienste verfügen, wird empfohlen, dieselbe Anwendungsidentität zu verwenden, damit Sie die Identität nicht für jeden Dienst konfigurieren müssen. Andere Dienste können diese Umgebungsvariablen auch basierend auf den Einstellungen dieser Dienste verwenden.

Um beispielsweise geheime Clientschlüsselanmeldeinformationen zu verwenden, konfigurieren Sie die Identität wie folgt in der Datei local.settings.json:

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

Fügen Sie im Azure-Portal wie folgt Einstellungen hinzu:

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

Konfigurieren einer Identität in SignalR-spezifizierten Variablen

Die in SignalR-spezifizierten Variablen verwenden das gleiche Schlüsselpräfix mit dem serviceUri-Schlüssel. Hier ist die Liste der Variablen, die Sie evtl. verwenden:

  • clientId
  • clientSecret
  • tenantId

Im Folgenden finden Sie die Beispiele für die Verwendung geheimer Clientschlüsselanmeldeinformationen in der local.settings.json-Datei:

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

Fügen Sie im Azure-Portal wie folgt Einstellungen hinzu:

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

Nächste Schritte

Weitere Informationen finden Sie in den folgenden verwandten Artikeln: