Aanvragen voor Azure SignalR Service-resources autoriseren met door Microsoft Entra beheerde identiteiten
Azure SignalR Service ondersteunt Microsoft Entra-id voor het autoriseren van aanvragen van door Microsoft Entra beheerde identiteiten.
In dit artikel wordt beschreven hoe u uw Azure SignalR Service-resource en -code configureert voor het autoriseren van aanvragen voor de resource vanuit een beheerde identiteit.
Beheerde identiteiten configureren
De eerste stap is het configureren van beheerde identiteiten.
In dit voorbeeld ziet u hoe u een door het systeem toegewezen beheerde identiteit in een App Service configureert met behulp van Azure Portal:
Open de instellingen van uw app in Azure Portal onder de groep Instellingen in het linkernavigatiedeelvenster.
Selecteer Identiteit.
Schakel op het tabblad Door systeem toegewezen status over naar Aan. Klik op Opslaan.
Roltoewijzingen toevoegen in Azure Portal
In de volgende stappen wordt beschreven hoe u een SignalR App Server-rol toewijst aan een door het systeem toegewezen identiteit via een Azure SignalR Service-resource. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.
Notitie
Een rol kan worden toegewezen aan elk bereik, waaronder beheergroep, abonnement, resourcegroep of één resource. Zie Bereik voor Azure RBAC begrijpen voor meer informatie over het bereik.
Ga in Azure Portal naar uw Azure SignalR Service-resource.
Klik op Toegangsbeheer (IAM) .
Selecteer Toevoegen>Roltoewijzing toevoegen.
Selecteer op het tabblad Rol de optie SignalR-appserver.
Selecteer beheerde identiteit op het tabblad Leden en kies Leden selecteren.
Selecteer uw Azure-abonnement.
Selecteer Door het systeem toegewezen beheerde identiteit, zoek naar een virtuele machine waaraan u de rol wilt toewijzen en selecteer deze.
Selecteer op het tabblad Beoordelen en toewijzen de optie Beoordelen en toewijzen om de rol toe te wijzen.
Belangrijk
Het kan tot 30 minuten duren voordat Azure-roltoewijzingen zijn doorgegeven.
Zie de volgende artikelen voor meer informatie over het toewijzen en beheren van Azure-rollen:
- Azure-rollen toewijzen met behulp van het Azure Portal
- Azure-rollen toewijzen met behulp van de REST API
- Azure-rollen toewijzen met behulp van Azure PowerShell
- Azure-rollen toewijzen met behulp van de Azure CLI
- Azure-rollen toewijzen met behulp van Azure Resource Manager-sjablonen
Uw app configureren
App-server
Een door het systeem toegewezen identiteit gebruiken
Azure SignalR SDK ondersteunt identiteitsgebaseerde verbindingsreeks. Als de configuratie is ingesteld in de omgevingsvariabelen van App Server, hoeft u App Server niet opnieuw te implementeren, maar hoeft u alleen een configuratiewijziging te wijzigen om te migreren van Toegangssleutel naar MSI. Werk bijvoorbeeld de omgevingsvariabele Azure__SignalR__ConnectionString
van uw App Server bij naar Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
. Of stel deze in DI-code in.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");
Bovendien kunt u DefaultAzureCredential of ManagedIdentityCredential gebruiken om uw Azure SignalR Service-eindpunten te configureren. De best practice is om rechtstreeks te gebruiken ManagedIdentityCredential
.
U ziet dat door het systeem toegewezen beheerde identiteit standaard wordt gebruikt, maar zorg ervoor dat u geen omgevingsvariabelen configureert die EnvironmentCredential behouden blijft als u gebruikt DefaultAzureCredential
. Anders valt Azure SignalR Service terug om EnvironmentCredential
de aanvraag te doen, wat meestal resulteert in een Unauthorized
reactie.
Belangrijk
Verwijder Azure__SignalR__ConnectionString
of er op deze manier omgevingsvariabelen waren. Azure__SignalR__ConnectionString
wordt gebruikt om standaard ServiceEndpoint
te bouwen met de eerste prioriteit en kan ertoe leiden dat uw App Server onverwacht toegangssleutel gebruikt.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
Een door de gebruiker toegewezen identiteit gebruiken
Geef ClientId
op tijdens het maken van het ManagedIdentityCredential
object.
Belangrijk
Gebruik de client-id, niet de object-id (principal), zelfs als ze beide GUID's zijn.
Gebruik op identiteit gebaseerde verbindingsreeks.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");
Of bouw ServiceEndpoint
met 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-bindingen in Azure Functions
Azure SignalR Service-bindingen in Azure Functions gebruiken toepassingsinstellingen in de portal of local.settings.json lokaal om een beheerde identiteit te configureren voor toegang tot uw Azure SignalR Service-resources.
Mogelijk hebt u een groep sleutel-waardeparen nodig om een identiteit te configureren. De sleutels van alle sleutel-/waardeparen moeten beginnen met een verbindingsnaamvoorvoegsel (standaard ingesteld op AzureSignalRConnectionString
) en een scheidingsteken. Het scheidingsteken is een onderstrepingsteken (__
) in de portal en een dubbele punt (:
lokaal). U kunt het voorvoegsel aanpassen met behulp van de bindingseigenschap ConnectionStringSetting
.
Een door het systeem toegewezen identiteit gebruiken
Als u alleen de service-URI configureert, gebruikt u de DefaultAzureCredential
klasse. Deze klasse is handig als u dezelfde configuratie wilt delen in Azure- en lokale ontwikkelomgevingen. Zie DefaultAzureCredential voor meer informatie over hoe het werkt.
Gebruik in Azure Portal het volgende voorbeeld om te configureren DefaultAzureCredential
. Als u geen van deze omgevingsvariabelen configureert, wordt de door het systeem toegewezen identiteit gebruikt voor verificatie.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Hier volgt een configuratievoorbeeld van DefaultAzureCredential
in het local.settings.json-bestand . Op het lokale bereik is er geen beheerde identiteit. Verificatie via Visual Studio, de Azure CLI en Azure PowerShell-accounts wordt op volgorde geprobeerd.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Als u een door het systeem toegewezen identiteit onafhankelijk en zonder invloed van andere omgevingsvariabelen wilt gebruiken, stelt u de credential
sleutel in met het voorvoegsel van de verbindingsnaam.managedidentity
Hier volgt een voorbeeld voor toepassingsinstellingen:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
Een door de gebruiker toegewezen identiteit gebruiken
Als u een door de gebruiker toegewezen identiteit wilt gebruiken, moet u naast serviceUri
en credential
sleutels met het voorvoegsel voor de verbindingsnaam toewijzenclientId
. Hier volgt een voorbeeld voor toepassingsinstellingen:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Volgende stappen
Zie de volgende gerelateerde artikelen: