Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Služba Azure SignalR service podporuje ID Microsoft Entra pro autorizaci požadavků pomocí aplikací Microsoft Entra.
Tento článek vysvětluje, jak nastavit prostředek a kód pro ověřování požadavků na prostředek pomocí aplikace Microsoft Entra.
Registrace aplikace v Microsoft Entra ID
Prvním krokem je registrace aplikace v Microsoft Entra ID:
Po registraci aplikace najdete hodnoty ID aplikace (klienta) a ID adresáře (tenanta) na stránce přehledu aplikace. Tyto identifikátory GUID můžou být užitečné v následujících krocích.
Přidat přihlašovací údaje
Po registraci aplikace můžete přidat certifikáty, tajné kódy klienta (řetězec) nebo přihlašovací údaje federované identity jako přihlašovací údaje k registraci důvěrné klientské aplikace. Přihlašovací údaje umožňují, aby se aplikace ověřila jako sama, nevyžaduje žádnou interakci uživatele za běhu a používají se důvěrnými klientskými aplikacemi, které přistupují k webovému rozhraní API.
Přidání přiřazení rolí v Azure portálu
Následující kroky popisují, jak přiřadit roli SignalR App Server služebnímu principálu nebo spravované identitě pro prostředek služby Azure SignalR. Podrobný postup najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.
Poznámka:
Roli můžete přiřadit k libovolnému oboru, včetně skupiny pro správu, předplatného, skupiny prostředků nebo jednoho prostředku. Další informace o oboru najdete v tématu Vysvětlení oboru pro Azure RBAC.
Na webu Azure Portal přejděte k prostředku služby Azure SignalR.
V levém podokně vyberte Řízení přístupu (IAM).
Vyberte Přidat>Přidat přiřazení role.
Na kartě Role vyberte SignalR App Server. Další předdefinované role služby Azure SignalR závisí na vašem scénáři.
Role Popis Případ použití SignalR App Server Přístup k rozhraním API, která vytvářejí připojení k serveru a generují klíče. Nejčastěji se používá pro aplikační server s prostředkem Azure SignalR spuštěným v výchozím režimu. Vlastník služby SignalR Úplný přístup ke všem rozhraním API roviny dat, včetně rozhraní REST API, rozhraní API, která vytvářejí připojení k serveru, a rozhraní API, která generují klíče nebo tokeny. Používá se pro server vyjednávání s prostředkem služby Azure SignalR, který běží v bezserverovém režimu. Vyžaduje oprávnění rozhraní REST API i oprávnění rozhraní API pro ověřování. Vlastník rozhraní REST API služby SignalR Úplný přístup k rozhraním REST API roviny dat. Používá se pro sadu Azure SignalR Management SDK ke správě připojení a skupin, ale nevytváří připojení k serveru ani nezpracovává žádosti o vyjednávání. Čtečka rozhraní REST API služby SignalR Přístup k datové rovině rozhraní REST API pouze pro čtení Používá se při tvorbě monitorovacího nástroje volajícího rozhraní REST API jen pro čtení. Vyberte Další.
Pro aplikaci Microsoft Entra:
- V řádku Přiřadit přístup k vyberte Uživatel, skupina nebo instanční objekt.
- Na řádku Členové vyberte vyberte členy a v automaticky otevíraných oknech zvolte identitu.
Pro spravované identity pro prostředky Azure:
- V řádku Přiřadit přístup k vyberte Spravovaná identita.
- V řádku Členové vyberte vybrat členy a pak zvolte aplikaci v automaticky otevíraném okně.
Vyberte Další.
Zkontrolujte své zadání a poté vyberte Recenze + přiřadit pro potvrzení přiřazení role.
Důležité
Projevení nově přidaných přiřazení rolí může trvat až 30 minut.
Další informace o přiřazování a správě rolí Azure najdete tady:
- Přiřazení rolí Azure pomocí webu Azure Portal
- Přiřazení rolí Azure pomocí rozhraní REST API
- Přiřazení rolí Azure pomocí Azure PowerShellu
- Přiřazení rolí Azure pomocí Azure CLI
- Přiřazení rolí Azure pomocí šablon Azure Resource Manageru
Konfigurace sady SDK aplikačního serveru Microsoft.Azure.SignalR pro jazyk C#
Sada SDK serveru Azure SignalR pro jazyk C#
Sada pro vývoj serveru Azure SignalR využívá knihovnu Azure.Identity ke generování tokenů pro připojení k prostředkům. Kliknutím můžete prozkoumat podrobné využití.
Poznámka:
Id tenanta se musí shodovat s ID tenanta, ve kterém je váš prostředek SignalR.
Použití aplikace Microsoft Entra s certifikátem
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);
];
});
Použití aplikace Microsoft Entra s tajným klíčem klienta
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Použití aplikace Microsoft Entra s federovanou identitou
V případě, že vaše organizace zakázala používání tajného klíče klienta nebo certifikátu, můžete nakonfigurovat aplikaci tak, aby důvěřovala spravované identitě pro ověřování.
Další informace najdete v tématu Konfigurace aplikace tak, aby důvěřovala spravované identitě (Preview).
Poznámka:
Konfigurace aplikace tak, aby důvěřovala spravované identitě, je funkce Preview.
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);
];
});
Tento přihlašovací údaj použije spravovanou identitu přiřazenou uživatelem k vygenerování clientAssertion a použití k výměně za clientToken pro účely ověření.
appClientId a tenantId by měla být podniková aplikace, kterou jste nastavili v tenantovi prostředku SignalR.
Použití více koncových bodů
Přihlašovací údaje se můžou lišit pro různé koncové body.
V této ukázce se sada Azure SignalR SDK připojí k resource1 pomocí tajného klíče klienta a připojí k resource2 pomocí certifikátu.
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),
};
});
Další ukázku najdete na tomto odkazu na ukázku.
Vazby služby Azure SignalR Ve službě Azure Functions
Vazby služby Azure SignalR ve službě Azure Functions používají nastavení aplikace na portálu nebo local.settings.json místně ke konfiguraci identit aplikací Microsoft Entra pro přístup k prostředkům služby Azure SignalR.
Nejprve musíte zadat identifikátor URI služby služby Azure SignalR Service. Klíč identifikátoru URI služby je serviceUri. Začíná předponou názvu připojení (výchozí hodnotou AzureSignalRConnectionString) a oddělovačem. Oddělovač je podtržítko (__) na portálu Azure a dvojtečka (:) v souboru local.settings.json. Název připojení můžete upravit pomocí vlastnosti ConnectionStringSetting. Pokračujte ve čtení a najděte ukázku.
Pak se rozhodnete, jestli chcete nakonfigurovat identitu aplikace Microsoft Entra v předdefinovaných proměnných prostředí nebo v proměnných definovaných SignalR.
Konfigurace identity v předdefinovaných proměnných prostředí
Seznam předdefinovaných proměnných prostředí najdete v tématu Proměnné prostředí. Pokud máte více služeb, doporučujeme použít stejnou identitu aplikace, abyste nemuseli konfigurovat identitu pro každou službu. Jiné služby můžou tyto proměnné prostředí používat také na základě nastavení těchto služeb.
Pokud například chcete použít přihlašovací údaje pro tajný klíč klienta, nakonfigurujte identitu následujícím způsobem v souboru local.settings.json :
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"AZURE_TENANT_ID": "..."
}
}
Na webu Azure Portal přidejte nastavení následujícím způsobem:
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...
Konfigurace identity v proměnných zadaných službou SignalR
Proměnné zadané pomocí SignalR sdílejí stejnou předponu klíče jako klíč serviceUri. Tady je seznam proměnných, které můžete použít:
clientIdclientSecrettenantId
Tady jsou ukázky pro použití přihlašovacích údajů ke tajným klíčům klienta v souboru local.settings.json :
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"<CONNECTION_NAME_PREFIX>:clientId": "...",
"<CONNECTION_NAME_PREFIX>:clientSecret": "...",
"<CONNECTION_NAME_PREFIX>:tenantId": "..."
}
}
Na webu Azure Portal přidejte nastavení následujícím způsobem:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...
Další kroky
Projděte si následující související články: