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:
Greifen Sie auf die Einstellungen Ihrer App im Azure-Portal unter der Gruppe Einstellungen im linken Navigationsbereich zu.
Wählen Sie Identität aus.
Ändern Sie auf der Registerkarte Systemseitig zugewiesen den Status in Ein. Klicken Sie auf Speichern.
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.
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 Verwaltete Identität und dann Mitglieder auswählen aus.
Wählen Sie Ihr Azure-Abonnement.
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.
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
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: