Compartilhar via


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:

  1. Acesse as configurações do aplicativo no portal do Azure no grupo Configurações no painel de navegação esquerdo.

  2. Selecionar Identidade.

  3. Na guia Sistema atribuído, alterne o Status para Ligado. Clique em Save (Salvar).

    A captura de tela mostra onde alternar Status para Ligado e selecionar 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.

  1. No portal do Azure, acesse o recurso do Serviço do Azure SignalR.

  2. Selecione IAM (Controle de acesso) .

  3. Selecione Adicionar>Adicionar atribuição de função.

    Captura de tela que mostra a página de controle de acesso e seleções para adicionar uma atribuição de função.

  4. Na guia Função, selecione Servidor do Aplicativo SignalR.

  5. Na guia Membros, selecione Identidade gerenciada e escolha Selecionar membros.

  6. Selecione sua assinatura do Azure.

  7. Selecione Identidade gerenciada atribuída pelo sistema, pesquise uma máquina virtual à qual você deseja atribuir a função e selecione-a.

  8. 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:

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: