Auktorisera begäranden till Azure SignalR Service-resurser med Microsoft Entra-hanterade identiteter
Azure SignalR Service stöder Microsoft Entra-ID för auktorisering av begäranden från Microsoft Entra-hanterade identiteter.
Den här artikeln visar hur du konfigurerar din Azure SignalR Service-resurs och kod för att auktorisera begäranden till resursen från en hanterad identitet.
Konfigurera hanterade identiteter
Det första steget är att konfigurera hanterade identiteter.
Det här exemplet visar hur du konfigurerar en systemtilldelad hanterad identitet i en App Service med hjälp av Azure Portal:
Få åtkomst till appens inställningar i Azure Portal under gruppen Inställningar i det vänstra navigeringsfönstret.
Välj Identitet.
På fliken Systemtilldelat växlar du Status till På. Klicka på Spara.
Mer information om hur du konfigurerar hanterade identiteter på andra sätt för Azure App Service och Azure Functions finns i Använda hanterade identiteter för App Service och Azure Functions.
Mer information om hur du konfigurerar hanterade identiteter på en virtuell Azure-dator finns i Konfigurera hanterade identiteter på virtuella Azure-datorer (VM)
Lägg till rolltilldelningar i Azure Portal
Följande steg beskriver hur du tilldelar en SignalR App Server-roll till en systemtilldelad identitet över en Azure SignalR Service-resurs. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.
Kommentar
En roll kan tilldelas till valfritt omfång, inklusive hanteringsgrupp, prenumeration, resursgrupp eller enskild resurs. Mer information om omfång finns i Förstå omfånget för Azure RBAC.
I Azure Portal går du till din Azure SignalR Service-resurs.
Välj Åtkomstkontroll (IAM) .
Välj Lägg till>Lägg till rolltilldelning.
På fliken Roll väljer du SignalR App Server.
På fliken Medlemmar väljer du Hanterad identitet och sedan Välj medlemmar.
Välj din Azure-prenumerationen.
Välj Systemtilldelad hanterad identitet, sök efter en virtuell dator som du vill tilldela rollen till och välj den sedan.
På fliken Granska + tilldela väljer du Granska + tilldela för att tilldela rollen.
Viktigt!
Azure-rolltilldelningar kan ta upp till 30 minuter att sprida.
Mer information om hur du tilldelar och hanterar Azure-roller finns i följande artiklar:
- Tilldela Azure-roller med hjälp av Azure-portalen
- Tilldela Azure-roller med hjälp av REST-API:et
- Tilldela Azure-roller med hjälp av Azure PowerShell
- Tilldela Azure-roller med hjälp av Azure CLI
- Tilldela Azure-roller med hjälp av Azure Resource Manager-mallar
Konfigurera din app
Appserver
Använda en systemtilldelad identitet
Azure SignalR SDK stöder identitetsbaserade anslutningssträng. Om konfigurationen anges i App Server-miljövariablerna behöver du inte distribuera om App Server utan bara en konfigurationsändring för att migrera från Åtkomstnyckel till MSI. Du kan till exempel uppdatera appserverns miljövariabel Azure__SignalR__ConnectionString
till Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
. Eller ange i DI-kod.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");
Dessutom kan du använda Antingen StandardAzureCredential eller ManagedIdentityCredential för att konfigurera dina Azure SignalR Service-slutpunkter. Det bästa sättet är att använda ManagedIdentityCredential
direkt.
Observera att systemtilldelad hanterad identitet används som standard, men se till att du inte konfigurerar några miljövariabler som EnvironmentCredential bevarar om du använder DefaultAzureCredential
. Annars används Azure SignalR Service igen för EnvironmentCredential
att göra begäran, vilket vanligtvis resulterar i ett Unauthorized
svar.
Viktigt!
Om Azure__SignalR__ConnectionString
finns i miljövariablerna tar du bort den. Om miljövariabeln hittas prioriteras den och används för att skapa standardvärdet ServiceEndpoint
, vilket kan leda till att appservern oväntat använder åtkomstnyckeln.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
Använda en användartilldelad identitet
Ange ClientId
när du skapar objektet ManagedIdentityCredential
.
Viktigt!
Använd klient-ID:t, inte objektets (huvudnamn) ID, även om de båda är GUID:er.
Använd identitetsbaserad anslutningssträng.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");
Eller skapa ServiceEndpoint
med 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-bindningar i Azure Functions
Azure SignalR Service-bindningar i Azure Functions använder programinställningar i portalen eller local.settings.json lokalt för att konfigurera en hanterad identitet för åtkomst till dina Azure SignalR Service-resurser.
Du kan behöva en grupp nyckel/värde-par för att konfigurera en identitet. Nycklarna för alla nyckel/värde-par måste börja med ett anslutningsnamnprefix (som standard är AzureSignalRConnectionString
) och en avgränsare. Avgränsaren är ett understreck (__
) i portalen och ett kolon (:
) lokalt. Du kan anpassa prefixet med hjälp av bindningsegenskapen ConnectionStringSetting
.
Använda en systemtilldelad identitet
Om du bara konfigurerar tjänst-URI:n använder DefaultAzureCredential
du klassen . Den här klassen är användbar när du vill dela samma konfiguration i Azure och lokala utvecklingsmiljöer. Information om hur det fungerar finns i DefaultAzureCredential.
I Azure Portal använder du följande exempel för att konfigurera DefaultAzureCredential
. Om du inte konfigurerar någon av dessa miljövariabler används den systemtilldelade identiteten för autentisering.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Här är ett konfigurationsexempel på DefaultAzureCredential
i filen local.settings.json . Det finns ingen hanterad identitet i det lokala omfånget. Autentisering via Visual Studio, Azure CLI och Azure PowerShell-konton görs i ordning.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Om du vill använda en systemtilldelad identitet oberoende av varandra och utan påverkan från andra miljövariabler anger du credential
nyckeln med anslutningsnamnprefixet till managedidentity
. Här är ett exempel på programinställningar:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
Använda en användartilldelad identitet
Om du vill använda en användartilldelad identitet måste du tilldela clientId
utöver serviceUri
och credential
nycklar med anslutningsnamnets prefix. Här är ett exempel på programinställningar:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Nästa steg
Se följande relaterade artiklar: