Dela via


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 på en virtuell dator (VM) med hjälp av Azure-portalen:

  1. I Azure-portalen söker du efter och väljer en virtuell dator.

  2. Under Inställningar väljer du Identitet.

  3. På fliken Systemtilldelat växlar du Status till .

    Skärmbild av val för att aktivera systemtilldelade hanterade identiteter för en virtuell dator.

  4. Välj knappen Spara för att bekräfta ändringen.

Information om hur du skapar användartilldelade hanterade identiteter finns i Skapa en användartilldelad hanterad identitet.

Mer information om hur du konfigurerar hanterade identiteter finns i någon av följande artiklar:

Information om hur du konfigurerar hanterade identiteter för Azure App Service och Azure Functions finns i Använda hanterade identiteter för App Service och Azure Functions.

Lägga till rolltilldelningar i Azure-portalen

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.

  1. I Azure-portalen går du till din Azure SignalR Service-resurs.

  2. Välj Åtkomstkontroll (IAM) .

  3. Välj Lägg till>Lägg till rolltilldelning.

    Skärmbild som visar sidan för åtkomstkontroll och val för att lägga till en rolltilldelning.

  4. På fliken Roll väljer du SignalR App Server.

  5. På fliken Medlemmar väljer du Hanterad identitet och sedan Välj medlemmar.

  6. Välj din Azure-prenumerationen.

  7. Välj Systemtilldelad hanterad identitet, sök efter en virtuell dator som du vill tilldela rollen till och välj den sedan.

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

Konfigurera din app

Appserver

Använda en systemtilldelad identitet

Du kan använda antingen DefaultAzureCredential eller ManagedIdentityCredential för att konfigurera dina Azure SignalR Service-slutpunkter. Det bästa sättet är att använda ManagedIdentityCredential direkt.

Den systemtilldelade hanterade identiteten används som standard, men se till att du inte konfigurerar några miljövariabler som EnvironmentCredential bevarade 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.

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.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your 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-portalen 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: