Dela via


Auktorisera begäranden till Azure SignalR Service-resurser med Microsoft Entra-program

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

Den här artikeln visar hur du konfigurerar din Azure SignalR Service-resurs och -koder för att auktorisera begäranden till resursen från ett Microsoft Entra-program.

Registrera en app

Det första steget är att registrera ett Microsoft Entra-program:

  1. I Azure-portalen söker du efter och väljer Microsoft Entra-ID.

  2. Under Hantera, välj Appregistreringar.

  3. Välj Ny registrering. Fönstret Registrera ett program öppnas.

    Skärmbild av fönstret för att registrera ett program.

  4. Som Namn anger du ett visningsnamn för ditt program.

  5. Välj Registrera för att bekräfta registreringen.

När du har registrerat programmet kan du hitta värdena för program-ID och katalog-ID (klientorganisation) på programmets översiktssida. Dessa GUID:er kan vara användbara i följande steg.

Skärmbild av översiktsinformation för ett registrerat program.

Mer information om hur du registrerar ett program finns i Snabbstart: Registrera ett program med Microsoft platforma za identitete.

Lägg till autentiseringsuppgifter

Du kan lägga till både certifikat och klienthemligheter (en sträng) som autentiseringsuppgifter i din konfidentiella klientappregistrering.

Klienthemlighet

Programmet kräver en klienthemlighet för att bevisa sin identitet när den begär en token. Följ dessa steg för att skapa en klienthemlighet:

  1. Under Hantera väljer du Certifikat och hemligheter.

  2. På fliken Klienthemligheter väljer du Ny klienthemlighet.

    Skärmbild av val för att skapa en klienthemlighet.

  3. Ange en beskrivning för klienthemligheten och välj en förfallotid.

  4. Kopiera värdet för klienthemligheten och klistra sedan in den på en säker plats.

    Kommentar

    Hemligheten visas bara en gång.

Certifikat

Du kan ladda upp ett certifikat i stället för att skapa en klienthemlighet.

Skärmbild av val för att ladda upp ett certifikat.

Mer information om hur du lägger till autentiseringsuppgifter finns i Lägga till autentiseringsuppgifter.

Lägga till rolltilldelningar i Azure-portalen

Följande steg beskriver hur du tilldelar en SignalR App Server-roll till ett tjänsthuvudnamn (program) ö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 Användare, grupp eller tjänstens huvudnamn och väljer sedan Välj medlemmar.

  6. Sök efter och välj det program som du vill tilldela rollen till.

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

Det bästa sättet är att konfigurera identitet och autentiseringsuppgifter i miljövariablerna:

Olika beskrivning
AZURE_TENANT_ID Klient-ID:t för Microsoft Entra.
AZURE_CLIENT_ID Klientens (programmets) ID för en appregistrering i klientorganisationen.
AZURE_CLIENT_SECRET En klienthemlighet som genererades för appregistreringen.
AZURE_CLIENT_CERTIFICATE_PATH En sökväg till ett certifikat och ett privat nyckelpar i PEM- eller PFX-format, som kan autentisera appregistreringen.
AZURE_USERNAME Användarnamnet, även kallat UPN (User Principal Name) för ett Microsoft Entra-användarkonto.
AZURE_PASSWORD Lösenordet för Microsoft Entra-användarkontot. Ett lösenord stöds inte för konton med multifaktorautentisering aktiverat.

Du kan använda antingen DefaultAzureCredential eller EnvironmentCredential för att konfigurera dina Azure SignalR Service-slutpunkter. Här är koden för DefaultAzureCredential:

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

Här är koden för EnvironmentCredential:

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

Mer information om hur DefaultAzureCredential fungerar finns i Klassen DefaultAzureCredential.

Använda slutpunktsspecifika autentiseringsuppgifter

I din organisation kanske du vill använda olika autentiseringsuppgifter för olika slutpunkter.

I det här scenariot kan du använda ClientSecretCredential eller ClientCertificateCredential:

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");

    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
    };
});

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 Microsoft Entra-programidentiteter för åtkomst till dina Azure SignalR Service-resurser.

Först måste du ange tjänst-URI för Azure SignalR Service. Nyckeln för tjänstens URI är serviceUri. Det börjar med ett anslutningsnamnprefix (som standard är AzureSignalRConnectionString) och en avgränsare. Avgränsaren är ett understreck (__) i Azure-portalen och ett kolon (:) i filen local.settings.json . Du kan anpassa anslutningsnamnet med hjälp av bindningsegenskapen ConnectionStringSetting. Fortsätt att läsa för att hitta exemplet.

Sedan väljer du om du vill konfigurera din Microsoft Entra-programidentitet i fördefinierade miljövariabler eller i SignalR-angivna variabler.

Konfigurera en identitet i fördefinierade miljövariabler

Se Miljövariabler för listan över fördefinierade miljövariabler. När du har flera tjänster rekommenderar vi att du använder samma programidentitet så att du inte behöver konfigurera identiteten för varje tjänst. Andra tjänster kan också använda dessa miljövariabler baserat på inställningarna för dessa tjänster.

Om du till exempel vill använda autentiseringsuppgifter för klienthemligheter konfigurerar du identiteten enligt följande i filen local.settings.json :

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "AZURE_CLIENT_ID": "...",
    "AZURE_CLIENT_SECRET": "...",
    "AZURE_TENANT_ID": "..."
  }
}

Lägg till inställningar på följande sätt i Azure-portalen:

 <CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...

Konfigurera en identitet i SignalR-angivna variabler

SignalR-angivna variabler delar samma nyckelprefix med serviceUri nyckeln. Här är listan över variabler som du kan använda:

  • clientId
  • clientSecret
  • tenantId

Här följer exempel på hur du använder autentiseringsuppgifter för klienthemligheter i local.settings.json-filen:

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "<CONNECTION_NAME_PREFIX>:clientId": "...",
    "<CONNECTION_NAME_PREFIX>:clientSecret": "...",
    "<CONNECTION_NAME_PREFIX>:tenantId": "..."
  }
}

Lägg till inställningar på följande sätt i Azure-portalen:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...

Nästa steg

Se följande relaterade artiklar: