Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure SignalR Service stöder Microsoft Entra-ID för auktorisering av begäranden med Microsoft Entra-program.
Den här artikeln beskriver hur du konfigurerar din resurs och kod för att autentisera begäranden till resursen med hjälp av ett Microsoft Entra-program.
Registrera ett program i Microsoft Entra ID
Det första steget är att registrera ett program i Microsoft Entra-ID:
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.
               
              
            
Lägg till autentiseringsuppgifter
När du har registrerat en app kan du lägga till certifikat, klienthemligheter (en sträng) eller federerade identitetsuppgifter som autentiseringsuppgifter i din konfidentiella klientappregistrering. Autentiseringsuppgifter gör att ditt program kan autentiseras som sig självt, vilket inte kräver någon interaktion från en användare vid körning och används av konfidentiella klientprogram som har åtkomst till ett webb-API.
- Lägga till ett certifikat
- Lägg till en klienthemlighet
- Lägga till en federerad autentiseringsuppgift
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-portalen.
Note
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.
- I Azure Portal går du till din Azure SignalR Service-resurs. 
- Välj Åtkomstkontroll (IAM) i det vänstra fönstret. 
- Välj Lägg till>Lägg till rolltilldelning.   
- På fliken Roll väljer du SignalR App Server. Andra inbyggda Roller i Azure SignalR Service beror på ditt scenario. - Role - 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. 
- Välj Nästa. 
- För Microsoft Entra-program: - På raden Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn.
- På raden Medlemmar, välj välja medlemmar och välj sedan identiteten i popup-fönstret.
 
- För hanterad identitet för Azure-resurser: - På raden Tilldela åtkomst till väljer du Hanterad identitet.
- På raden Medlemmar, välj välj medlemmar och välj sedan applikationen i popup-fönstret.
 
- Välj Nästa. 
- 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 propageras.
Mer information om hur du tilldelar och hanterar Azure-roller finns i:
- 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 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.
Note
tenantId måste matcha tenantId för den klientorganisation där din SignalR-resurs finns.
Använda Microsoft Entra-program med certifikat
services.AddSignalR().AddAzureSignalR(option =>
{
    var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
    option.Endpoints = [
      new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
    ];
});
Använda Microsoft Entra-program med klienthemlighet
services.AddSignalR().AddAzureSignalR(option =>
{
    var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    option.Endpoints = [
      new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
    ];
});
Använda Microsoft Entra-program med federerad identitet
Om din organisation har inaktiverat användningen av klienthemlighet/certifikat kan du konfigurera programmet så att det litar på en hanterad identitet för autentisering.
Mer information om det finns i Konfigurera ett program att lita på en hanterad identitet (förhandsversion).
Note
Konfigurera ett program för att lita på en hanterad identitet är en förhandsversionsfunktion.
services.AddSignalR().AddAzureSignalR(option =>
{
    var msiCredential = new ManagedIdentityCredential("msiClientId");
    var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
    {
        // Entra ID US Government: api://AzureADTokenExchangeUSGov
        // Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
        var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
        var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
        return response.Token;
    });
    option.Endpoints = [
        new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
    ];
});
Den här autentiseringsuppgiften använder den användartilldelade hanterade identiteten för att generera en clientAssertion och använda den för att byta ut mot en clientToken för autentisering.
De appClientId och tenantId ska vara det företagsprogram som du tillhandahållit i SignalR-resursens klientorganisation.
Använda flera slutpunkter
Autentiseringsuppgifterna kan vara olika för olika slutpunkter.
I det här exemplet ansluter Azure SignalR SDK till resource1 med klienthemlighet och ansluter till resource2 med certifikat.
services.AddSignalR().AddAzureSignalR(option =>
{
    var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
    };
});
Fler exempel finns i den här exempellänken
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 Portal 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 Portal:
 <CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...
Konfigurera en identitet i variabler som specificerats av SignalR
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 Portal:
<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: