Dela via


Auktorisera begäranden till Azure SignalR-resurser med hanterade identiteter för Azure-resurser

Azure SignalR Service stöder Microsoft Entra-ID för auktorisering av begäranden från hanterade identiteter för Azure-resurser.

Den här artikeln beskriver hur du konfigurerar din resurs och kod för att auktorisera begäranden till resursen med hjälp av en hanterad identitet.

Konfigurera hanterade identiteter

Det första steget är att konfigurera hanterade identiteter på din app eller virtuella dator.

Lägg till rolltilldelningar i Azure Portal

Följande steg beskriver hur du tilldelar en SignalR App Server-roll till ett huvudnamn för tjänsten eller en hanterad identitet för en Azure SignalR Service-resurs. Detaljerade steg finns i Tilldela Azure-roller med hjälp av Azure Portal.

Anteckning

Du kan tilldela en roll 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 Portal går du till din Azure SignalR Service-resurs.

  2. Välj Åtkomstkontroll (IAM) i det vänstra fönstret.

  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. Andra inbyggda Roller i Azure SignalR Service beror på ditt scenario.

    Roll Beskrivning Användningsfall
    SignalR App Server Åtkomst till DE API:er som skapar serveranslutningar och genererar nycklar. Används oftast för en appserver med en Azure SignalR-resurs som körs i standardläge.
    SignalR Service-ägare Fullständig åtkomst till alla API:er på dataplanet, inklusive REST-API:er, API:er som skapar serveranslutningar och DE API:er som genererar nycklar/token. Används för en förhandlingsserver med en Azure SignalR Service-resurs som körs i serverlöst läge. Det kräver både REST API-behörigheter och autentiserings-API-behörigheter.
    SignalR REST API-ägare Fullständig åtkomst till REST-API:er för dataplanet. Används för Azure SignalR Management SDK för att hantera anslutningar och grupper, men det gör inte serveranslutningar eller hanterar förhandlingsbegäranden.
    SignalR REST API-läsare Skrivskyddad åtkomst till dataplanets REST-API:er. Används när du skriver ett övervakningsverktyg som anropar skrivskyddade REST-API:er.
  5. Välj Nästa.

  6. För Microsoft Entra-program:

    1. På raden Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn.
    2. På raden Medlemmar väljer du välj medlemmar och sedan väljer du identiteten i popup-fönstret.
  7. För hanterad identitet för Azure-resurser:

    1. På raden Tilldela åtkomst till väljer du Hanterad identitet.
    2. På raden Medlemmar väljer du välj medlemmar och sedan väljer du programmet i popup-fönstret.
  8. Välj Nästa.

  9. Granska din uppgift och välj sedan Granska + tilldela för att bekräfta rolltilldelningen.

Viktigt!

Nyligen tillagda rolltilldelningar kan ta upp till 30 minuter att spridas.

Mer information om hur du tilldelar och hanterar Azure-roller finns i:

Konfigurera Microsoft.Azure.SignalR-appserverns SDK för C#

Azure SignalR-server-SDK för C#

Azure SignalR Server SDK använder Azure.Identity-biblioteket för att generera token för att ansluta till resurser. Klicka här om du vill utforska detaljerade användningar.

Använda systemtilldelad identitet

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential()),
    };
});

Använda användartilldelad identitet

Viktigt!

Använd klient-ID:t, inte objektets (huvudnamn) ID

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-assigned-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
    };
});

Fler exempel finns i den här exempellänken

Använda flera slutpunkter

Autentiseringsuppgifterna kan vara olika för olika slutpunkter.

I det här exemplet ansluter Azure SignalR SDK till resource1 med systemtilldelad hanterad identitet och ansluter till resource2 med användartilldelad hanterad identitet.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-assigned-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
        new ServiceEndpoint(new Uri("https://<resource2>.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 försöks i tur och 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: