Autorizar solicitações para recursos do Serviço do Azure SignalR com identidades gerenciadas do Microsoft Entra
O Serviço do Azure SignalR dá suporte ao Microsoft Entra ID para autorizar solicitações das identidades gerenciadas do Microsoft Entra.
Este artigo mostra como configurar o recurso e o código do Serviço do Azure SignalR para autorizar solicitações ao recurso de uma identidade gerenciada.
Configurar identidades gerenciadas
A primeira etapa é configurar identidades gerenciadas.
Este exemplo mostra como configurar uma identidade gerenciada atribuída pelo sistema em um Serviço de Aplicativo usando o portal do Azure:
Acesse as configurações do aplicativo no portal do Azure no grupo Configurações no painel de navegação esquerdo.
Selecionar Identidade.
Na guia Sistema atribuído, alterne o Status para Ligado. Clique em Save (Salvar).
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 VMs (máquinas virtuais) do Azure
Adicionar atribuições de função no portal do Azure
As etapas a seguir descrevem como atribuir uma função do Servidor do Aplicativo SignalR a uma identidade atribuída pelo sistema em um recurso do Serviço do Azure SignalR. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.
Observação
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 escopo, consulte Entender o escopo do RBAC do Azure.
No portal do Azure, acesse o recurso do Serviço do Azure SignalR.
Selecione IAM (Controle de acesso) .
Selecione Adicionar>Adicionar atribuição de função.
Na guia Função, selecione Servidor do Aplicativo SignalR.
Na guia Membros, selecione Identidade gerenciada e escolha Selecionar membros.
Selecione sua assinatura do Azure.
Selecione Identidade gerenciada atribuída pelo sistema, pesquise uma máquina virtual à qual você deseja atribuir a função e selecione-a.
Na guia Examinar + atribuir, selecione Examinar + atribuir para atribuir a função.
Importante
As atribuições de função do Azure podem levar até 30 minutos para serem propagadas.
Para saber mais sobre como atribuir e gerenciar funções do Azure, confira estes artigos:
- Atribuir funções do Azure usando o portal do Azure
- Atribuir funções do Azure usando a API REST
- Atribuir funções do Azure usando o Azure PowerShell
- Atribuir funções do Azure usando a CLI do Azure
- Atribuir funções do Azure usando modelos do Azure Resource Manager
Configurar o aplicativo
Servidor de aplicativos
Usar uma identidade atribuída pelo 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 Servidor de Aplicativos, você não precisará reimplantar o Servidor de Aplicativos, basta uma alteração de configuração para migrar da chave de acesso para MSI. Por exemplo, atualize a variável de ambiente do Servidor de Aplicativos Azure__SignalR__ConnectionString
para Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;
. Ou defina o 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 do Azure SignalR. A melhor prática é usar ManagedIdentityCredential
diretamente.
Observe que a identidade gerenciada atribuída pelo 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 do Azure SignalR volta a usar EnvironmentCredential
para fazer a solicitação, o que geralmente resulta em uma resposta Unauthorized
.
Importante
Remova Azure__SignalR__ConnectionString
se houver variáveis de ambiente dessa maneira. Azure__SignalR__ConnectionString
será usado para criar ServiceEndpoint
padrão com prioridade e pode levar seu Servidor de Aplicativos 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
Forneça ClientId
ao criar o objeto ManagedIdentityCredential
.
Importante
Use a ID do cliente, não a ID do objeto (entidade de segurança), 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 crie 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 do Azure SignalR no Azure Functions
As associações do Serviço do Azure SignalR no Azure Functions usam configurações de aplicativo no portal local.settings.json localmente para configurar uma identidade gerenciada para acessar os recursos do Serviço do Azure SignalR.
Talvez seja necessário um grupo de pares chave-valor para configurar uma identidade. A chaves de todos os pares chave-valor devem começar com um prefixo do nome de conexão (o padrão é AzureSignalRConnectionString
) e um separador. O separador é um traço subscrito (__
) no portal e dois-pontos (:
) localmente. Você pode personalizar o prefixo usando a propriedade de associação ConnectionStringSetting
.
Usar uma identidade atribuída pelo sistema
Se você configurar apenas o URI de serviço, use a classe DefaultAzureCredential
. Essa classe é útil quando você deseja compartilhar a mesma configuração em ambientes de desenvolvimento local e do Azure. Para saber como ela funciona, consulte DefaultAzureCredential.
No portal do Azure, use o exemplo a seguir para configurar DefaultAzureCredential
. Se você não configurar nenhuma dessas variáveis de ambiente, a identidade atribuída pelo sistema será usada para autenticação.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Aqui está um exemplo de configuração de DefaultAzureCredential
no arquivo local.settings.json. No escopo local, não há identidade gerenciada. Ocorre uma tentativa de autenticação em ordem por meio do Visual Studio, da CLI do Azure e das contas do Azure PowerShell.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Se você quiser usar uma identidade atribuída pelo sistema de forma independente e sem a influência de outras variáveis de ambiente, defina a chave credential
com o prefixo do nome de conexão como managedidentity
. Aqui está um exemplo de configurações de 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, será necessário atribuir clientId
, além de chaves serviceUri
e credential
com o prefixo do nome de conexão. Aqui está um exemplo de configurações de aplicativo:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Próximas etapas
Confira os seguintes artigos relacionados: