Freigeben über


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

Azure SignalR Service unterstützt Microsoft Entra ID zum Autorisieren von Anforderungen von Microsoft Entra-Anwendungen.

In diesem Artikel wird erläutert, wie Sie Ihre Azure SignalR Service-Ressource und -Codes konfigurieren, um Anforderungen an die Ressource aus einer Microsoft Entra-Anwendung zu autorisieren.

Eine Anwendung registrieren

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

  1. Suchen Sie im Azure Portal nach Microsoft Entra ID und wählen Sie diese aus.

  2. Wählen Sie unter Verwalten die Option App-Registrierungen aus.

  3. Wählen Sie Neue Registrierung aus. Der Bereich Registrieren einer Anwendung öffnet sich.

    Screenshot des Bereichs zum Registrieren einer Anwendung.

  4. Geben Sie als Name einen Anzeigenamen für Ihre Anwendung ein.

  5. Wählen Sie Registrieren aus, um die Registrierung zu bestätigen.

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.

Weitere Informationen zum Registrieren einer Anwendung finden Sie unter Schnellstart: Registrieren einer Anwendung auf der Microsoft Identity Platform.

Anmeldeinformationen hinzufügen

Sie können Ihrer vertraulichen Client-App-Registrierung sowohl Zertifikate als auch geheime Clientschlüssel (Zeichenfolge) als Anmeldeinformationen hinzufügen.

Geheimer Clientschlüssel

Die Anwendung benötigt zum Beweis ihrer Identität einen geheimen Clientschlüssel, wenn sie ein Token anfordert. Führen Sie die folgenden Schritte aus, um einen geheimen Clientschlüssel zu erstellen:

  1. Wählen Sie unter Verwalten die Option Zertifikate und Geheimnisse aus.

  2. Wählen Sie auf der Registerkarte Geheime Clientschlüssel die Option Neuer geheimer Clientschlüssel aus.

    Screenshot: Auswahloptionen für das Erstellen eines Clientschlüssels.

  3. Geben Sie eine Beschreibung für den geheimen Clientschlüssel ein und wählen Sie eine Ablaufzeit aus.

  4. Kopieren Sie den Wert des geheimen Clientschlüssels und fügen Sie ihn an einem sicheren Speicherort ein.

    Hinweis

    Das Geheimnis wird nur einmal angezeigt.

Zertifikat

Sie können ein Zertifikat hochladen, anstatt einen geheimen Clientschlüssel zu erstellen.

Screenshot der Auswahl zum Hochladen eines Zertifikats.

Weitere Informationen zum Hinzufügen von Anmeldeinformationen finden Sie unter Hinzufügen von Anmeldeinformationen.

Verwalten von Rollenzuweisungen im Azure-Portal

In den folgenden Schritten wird beschrieben, wie Sie einem Dienstprinzipal (Anwendung) 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 Benutzer, Gruppe oder Dienstprinzipal und dann die Option Mitglieder auswählen aus.

  6. Suchen Sie nach der Anwendung, der Sie die Rolle zuweisen möchten, und wählen Sie sie aus.

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

Die bewährte Methode besteht darin, Identität und Anmeldeinformationen in Ihren Umgebungsvariablen zu konfigurieren:

Variable Beschreibung
AZURE_TENANT_ID Die Microsoft Entra-Mandanten-ID.
AZURE_CLIENT_ID Die Client-ID (Anwendungs-ID) einer App-Registrierung im Mandanten.
AZURE_CLIENT_SECRET Ein Clientgeheimnis, das für die App-Registrierung generiert wurde.
AZURE_CLIENT_CERTIFICATE_PATH Ein Pfad zum Zertifikat und zum privaten Schlüsselpaar im PEM- oder PFX-Format für die Authentifizierung der App-Registrierung.
AZURE_USERNAME Der Benutzername, auch bekannt als User Principal Name (UPN), eines Microsoft Entra-Benutzerkontos.
AZURE_PASSWORD Das Kennwort des Microsoft Entra-Benutzerkontos. Ein Kennwort wird für Konten mit aktivierter mehrstufiger Authentifizierung nicht unterstützt.

Sie können entweder DefaultAzureCredential oder EnvironmentCredential verwenden, um Ihre Azure SignalR Service-Endpunkte zu konfigurieren. Der Code für DefaultAzureCredential lautet wie folgt:

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

Der Code für EnvironmentCredential lautet wie folgt:

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

Weitere Informationen zur Funktionsweise von DefaultAzureCredential finden Sie unter der DefaultAzureCredential-Klasse.

Verwenden von endpunktspezifischen Anmeldeinformationen

In Ihrer Organisation möchten Sie möglicherweise unterschiedliche Anmeldeinformationen für verschiedene Endpunkte verwenden.

In diesem Szenario können Sie ClientSecretCredential oder ClientCertificateCredential verwenden:

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 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: