Autorizar solicitações para recursos do Serviço Azure SignalR com identidades gerenciadas do Microsoft Entra
O Serviço Azure SignalR dá suporte à ID do Microsoft Entra para autorizar solicitações de identidades gerenciadas do Microsoft Entra.
Este artigo mostra como configurar o recurso e o código do Serviço Azure SignalR para autorizar solicitações ao recurso a partir de uma identidade gerenciada.
Configurar identidades geridas
A primeira etapa é configurar identidades gerenciadas.
Este exemplo mostra como configurar uma identidade gerenciada atribuída ao sistema em um Serviço de Aplicativo usando o portal do Azure:
Aceda às definições da sua aplicação no portal do Azure no grupo Definições no painel de navegação esquerdo.
Selecione a Identidade.
Na guia Sistema atribuído, alterne Status para Ativado. Clique em Guardar.
Para saber mais sobre como configurar identidades gerenciadas de outras maneiras para o Serviço de Aplicativo do Azure e o Azure Functions, consulte Como usar identidades gerenciadas para o Serviço de Aplicativo e o Azure Functions.
Para saber mais sobre como configurar identidades gerenciadas em uma VM do Azure, consulte Configurar identidades gerenciadas em máquinas virtuais (VMs) do Azure
Adicionar atribuições de função no portal do Azure
As etapas a seguir descrevem como atribuir uma função de Servidor de Aplicativo SignalR a uma identidade atribuída pelo sistema em um recurso do Serviço Azure SignalR. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Nota
Uma função pode ser atribuída a qualquer escopo, incluindo grupo de gerenciamento, assinatura, grupo de recursos ou recurso único. Para saber mais sobre o escopo, consulte Entender o escopo do Azure RBAC.
No portal do Azure, vá para o recurso do Serviço Azure SignalR.
Selecione Controlo de acesso (IAM) .
Selecione Adicionar>Adicionar atribuição de função.
Na guia Função, selecione SignalR App Server.
No separador Membros, selecione Identidade gerida e, em seguida, selecione Selecionar membros.
Selecione a subscrição do Azure.
Selecione Identidade gerenciada atribuída ao sistema, procure uma máquina virtual à qual você deseja atribuir a função e selecione-a.
No separador Rever + atribuir, selecione Rever + atribuir para atribuir a função.
Importante
As atribuições de função do Azure podem levar até 30 minutos para se propagar.
Para saber mais sobre como atribuir e gerenciar funções do Azure, consulte estes artigos:
- Atribuir funções do Azure com o portal do Azure
- Atribuir funções do Azure com a API REST
- Atribuir funções do Azure com o Azure PowerShell
- Atribuir funções do Azure com a CLI do Azure
- Atribuir funções do Azure usando modelos do Azure Resource Manager
Configurar seu aplicativo
Servidor de aplicações
Usar uma identidade atribuída ao sistema
O SDK do Azure SignalR dá suporte à cadeia de conexão baseada em identidade. Se a configuração estiver definida nas variáveis de ambiente do App Server, você não precisará reimplantar o App Server, mas simplesmente uma alteração de configuração para migrar da Chave de Acesso para o MSI. Por exemplo, atualize a variável Azure__SignalR__ConnectionString
de ambiente do App Server para Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
. Ou definido em código DI.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");
Além disso, você pode usar DefaultAzureCredential ou ManagedIdentityCredential para configurar seus pontos de extremidade do Serviço Azure SignalR. A melhor prática é usar ManagedIdentityCredential
diretamente.
Observe que a identidade gerenciada atribuída ao sistema é usada por padrão, mas certifique-se de não configurar nenhuma variável de ambiente que EnvironmentCredential preservou se você usar DefaultAzureCredential
. Caso contrário, o Serviço Azure SignalR voltará a ser usado EnvironmentCredential
para fazer a solicitação, o que geralmente resulta em uma Unauthorized
resposta.
Importante
Remova Azure__SignalR__ConnectionString
se houve variáveis de ambiente desta forma. Azure__SignalR__ConnectionString
será usado para criar padrão ServiceEndpoint
com a primeira prioridade e pode levar seu Servidor de Aplicativo a usar a Chave de Acesso inesperadamente.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
Usar uma identidade atribuída pelo usuário
Fornecer ClientId
ao criar o ManagedIdentityCredential
objeto.
Importante
Use o ID do cliente, não o ID do objeto (principal), mesmo que ambos sejam GUIDs.
Use a cadeia de conexão baseada em identidade.
services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");
Ou construa ServiceEndpoint
com 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)),
};
});
Associações do Serviço Azure SignalR no Azure Functions
As associações do Serviço Azure SignalR no Azure Functions usam as configurações do aplicativo no portal ou local.settings.json localmente para configurar uma identidade gerenciada para acessar seus recursos do Serviço Azure SignalR.
Você pode precisar de um grupo de pares chave/valor para configurar uma identidade. As chaves de todos os pares chave/valor devem começar com um prefixo de nome de conexão (que assume AzureSignalRConnectionString
como padrão ) e um separador. O separador é um sublinhado (__
) no portal e dois pontos (:
) localmente. Você pode personalizar o prefixo usando a propriedade ConnectionStringSetting
binding .
Usar uma identidade atribuída ao sistema
Se você configurar apenas o URI de serviço, usará a DefaultAzureCredential
classe. Essa classe é útil quando você deseja compartilhar a mesma configuração no Azure e em ambientes de desenvolvimento local. Para saber como funciona, consulte DefaultAzureCredential.
No portal do Azure, use o exemplo a seguir para configurar DefaultAzureCredential
o . Se você não configurar nenhuma dessas variáveis de ambiente, a identidade atribuída ao sistema será usada para autenticação.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Aqui está um exemplo de configuração no arquivo local.settings.json DefaultAzureCredential
. No escopo local, não há identidade gerenciada. A autenticação por meio do Visual Studio, da CLI do Azure e das contas do Azure PowerShell é tentada em ordem.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Se você quiser usar uma identidade atribuída ao sistema de forma independente e sem a influência de outras variáveis de ambiente, defina a credential
chave com o prefixo do nome da conexão como managedidentity
. Aqui está um exemplo de configurações do aplicativo:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
Usar uma identidade atribuída pelo usuário
Se você quiser usar uma identidade atribuída pelo usuário, precisará atribuir clientId
além serviceUri
de e credential
chaves com o prefixo do nome da conexão. Aqui está um exemplo de configurações do aplicativo:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Próximos passos
Veja os seguintes artigos relacionados: