Autorizace požadavků na prostředky služby Azure SignalR Service pomocí spravovaných identit Microsoft Entra
Služba Azure SignalR podporuje ID Microsoft Entra pro autorizaci požadavků ze spravovaných identit Microsoft Entra.
Tento článek ukazuje, jak nakonfigurovat prostředek a kód služby Azure SignalR tak, aby autorizoval požadavky na prostředek ze spravované identity.
Konfigurace spravovaných identit
Prvním krokem je konfigurace spravovaných identit.
V tomto příkladu se dozvíte, jak nakonfigurovat spravovanou identitu přiřazenou systémem ve službě App Service pomocí webu Azure Portal:
Přejděte k nastavení aplikace na webu Azure Portal ve skupině Nastavení v levém navigačním podokně.
Vyberte Identita.
Na kartě Přiřazený systém přepněte stav na Zapnuto. Klikněte na Uložit.
Další informace o konfiguraci spravovaných identit jinými způsoby pro službu Aplikace Azure Service a Azure Functions najdete v tématu Použití spravovaných identit pro App Service a Azure Functions.
Další informace o konfiguraci spravovaných identit na virtuálním počítači Azure najdete v tématu Konfigurace spravovaných identit na virtuálních počítačích Azure.
Přidání přiřazení rolí na webu Azure Portal
Následující kroky popisují, jak přiřadit roli Serveru aplikací SignalR k identitě přiřazené systémem přes prostředek služby Azure SignalR. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.
Poznámka:
Roli je možné 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.
Vyberte Řízení přístupu (IAM) .
Vyberte Přidat>Přidat přiřazení role.
Na kartě Role vyberte SignalR App Server.
Na kartě Členové vyberte Spravovaná identita a pak zvolte Vybrat členy.
Vyberte své předplatné Azure.
Vyberte spravovanou identitu přiřazenou systémem, vyhledejte virtuální počítač, ke kterému chcete roli přiřadit, a pak ji vyberte.
Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.
Důležité
Rozšíření přiřazení rolí Azure může trvat až 30 minut.
Další informace o přiřazování a správě rolí Azure najdete v těchto článcích:
- Přiřazování rolí Azure s využitím 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 aplikace
Aplikační server
Použití identity přiřazené systémem
Sada Azure SignalR SDK podporuje připojovací řetězec založené na identitách. Pokud je konfigurace nastavená v proměnných prostředí aplikačního serveru, nemusíte znovu nasadit App Server, ale jednoduše změnit konfiguraci pro migraci z přístupového klíče na MSI. Aktualizujte například proměnnou Azure__SignalR__ConnectionString
prostředí aplikačního serveru na Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
hodnotu . Nebo můžete nastavit kód DI.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");
Kromě toho můžete ke konfiguraci koncových bodů služby Azure SignalR použít buď DefaultAzureCredential , nebo ManagedIdentityCredential . Osvědčeným postupem je použít ManagedIdentityCredential
přímo.
Všimněte si, že spravovaná identita přiřazená systémem je ve výchozím nastavení používána, ale ujistěte se, že při použití DefaultAzureCredential
nenakonfigurujete žádné proměnné prostředí, které environmentCredential zachovají . Jinak se služba Azure SignalR vrátí k použití EnvironmentCredential
k provedení požadavku, což obvykle vede k Unauthorized
odpovědi.
Důležité
Tímto způsobem odeberte Azure__SignalR__ConnectionString
z proměnných prostředí. Azure__SignalR__ConnectionString
se použije k sestavení výchozího nastavení ServiceEndpoint
s první prioritou a může váš aplikační server neočekávaně používat přístupový klíč.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
Použití identity přiřazené uživatelem
Při vytváření objektu ManagedIdentityCredential
zadejteClientId
.
Důležité
Použijte ID klienta, nikoli ID objektu (objektu), i když jsou oba identifikátory GUID.
Použijte připojovací řetězec založený na identitě.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");
Nebo sestavte ServiceEndpoint
pomocí ManagedIdentityCredential
.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-identity-client-id>";
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
};
});
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 spravované identity pro přístup k prostředkům služby Azure SignalR.
Ke konfiguraci identity možná budete potřebovat skupinu párů klíč/hodnota. Klíče všech párů klíč/hodnota musí začínat předponou názvu připojení (která má výchozí hodnotuAzureSignalRConnectionString
) a oddělovačem. Oddělovač je podtržítko (__
) na portálu a dvojtečka (:
) místně. Předponu můžete přizpůsobit pomocí vlastnosti ConnectionStringSetting
vazby .
Použití identity přiřazené systémem
Pokud nakonfigurujete pouze identifikátor URI služby, použijete DefaultAzureCredential
třídu. Tato třída je užitečná, když chcete sdílet stejnou konfiguraci v azure a místních vývojových prostředích. Informace o tom, jak to funguje, najdete v tématu DefaultAzureCredential.
Na webu Azure Portal pomocí následujícího příkladu nakonfigurujte DefaultAzureCredential
. Pokud žádnou z těchto proměnných prostředí nenakonfigurujete, použije se k ověřování identita přiřazená systémem.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Tady je ukázka DefaultAzureCredential
konfigurace v souboru local.settings.json . V místním oboru neexistuje žádná spravovaná identita. Ověřování prostřednictvím sady Visual Studio, Azure CLI a účtů Azure PowerShellu se pokouší v pořadí.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Pokud chcete použít identitu přiřazenou systémem nezávisle a bez vlivu jiných proměnných prostředí, nastavte credential
klíč s předponou názvu připojení na managedidentity
. Tady je ukázka nastavení aplikace:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
Použití identity přiřazené uživatelem
Pokud chcete použít identitu přiřazenou uživatelem, musíte kromě klíčů přiřadit clientId
také serviceUri
předponu názvu připojení a credential
klíče. Tady je ukázka nastavení aplikace:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Další kroky
Projděte si následující související články: