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:
Suchen Sie im Azure Portal nach Microsoft Entra ID und wählen Sie diese aus.
Wählen Sie unter Verwalten die Option App-Registrierungen aus.
Wählen Sie Neue Registrierung aus. Der Bereich Registrieren einer Anwendung öffnet sich.
Geben Sie als Name einen Anzeigenamen für Ihre Anwendung ein.
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.
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:
Wählen Sie unter Verwalten die Option Zertifikate und Geheimnisse aus.
Wählen Sie auf der Registerkarte Geheime Clientschlüssel die Option Neuer geheimer Clientschlüssel aus.
Geben Sie eine Beschreibung für den geheimen Clientschlüssel ein und wählen Sie eine Ablaufzeit aus.
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.
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.
Wechseln Sie im Azure-Portal zu Ihrer Azure SignalR Service-Ressource.
Wählen Sie Zugriffssteuerung (IAM) aus.
Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen.
Wählen Sie auf der Registerkarte Rolle die Option SignalR-App-Server aus.
Wählen Sie auf der Registerkarte Mitglieder die Option Benutzer, Gruppe oder Dienstprinzipal und dann die Option Mitglieder auswählen aus.
Suchen Sie nach der Anwendung, der Sie die Rolle zuweisen möchten, und wählen Sie sie aus.
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:
- Zuweisen von Azure-Rollen über das Azure-Portal
- Zuweisen von Azure-Rollen mithilfe der REST-API
- Zuweisen von Azure-Rollen mithilfe von Azure PowerShell
- Zuweisen von Azure-Rollen mithilfe der Azure CLI
- Zuweisen von Azure-Rollen mithilfe von Azure Resource Manager-Vorlagen
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: