Autorizar solicitações para recursos do Serviço Azure SignalR com aplicativos Microsoft Entra

O Serviço Azure SignalR dá suporte à ID do Microsoft Entra para autorizar solicitações de aplicativos do Microsoft Entra.

Este artigo mostra como configurar seu recurso e códigos do Serviço Azure SignalR para autorizar solicitações ao recurso de um aplicativo Microsoft Entra.

Registar uma aplicação

O primeiro passo é registrar um aplicativo Microsoft Entra:

  1. No portal do Azure, procure e selecione Microsoft Entra ID.

  2. Em Gerir, selecione Registos das aplicações.

  3. Selecione Novo registo. O painel Registrar um aplicativo é aberto.

    Captura de ecrã do painel para registar uma aplicação.

  4. Em Nome, insira um nome para exibição para seu aplicativo.

  5. Selecione Registrar para confirmar o registro.

Depois de registrar seu aplicativo, você pode encontrar os valores de ID do aplicativo (cliente) e ID do diretório (locatário) na página de visão geral do aplicativo. Esses GUIDs podem ser úteis nas etapas a seguir.

Captura de tela das informações gerais de um aplicativo registrado.

Para saber mais sobre como registrar um aplicativo, consulte Guia de início rápido: registrar um aplicativo com a plataforma de identidade da Microsoft.

Adicionar credenciais

Você pode adicionar certificados e segredos de cliente (uma cadeia de caracteres) como credenciais ao registro confidencial do aplicativo cliente.

Segredo do cliente

O aplicativo requer um segredo do cliente para provar sua identidade quando está solicitando um token. Para criar um segredo do cliente, siga estes passos:

  1. Em Gerenciar, selecione Certificados & segredos.

  2. Na guia Segredos do cliente, selecione Novo segredo do cliente.

    Captura de tela de seleções para criar um segredo do cliente.

  3. Insira uma descrição para o segredo do cliente e escolha um tempo de expiração.

  4. Copie o valor do segredo do cliente e cole-o em um local seguro.

    Nota

    O segredo aparece apenas uma vez.

Certificado

Você pode carregar um certificado em vez de criar um segredo do cliente.

Captura de ecrã das seleções para carregar um certificado.

Para saber mais sobre como adicionar credenciais, consulte Adicionar credenciais.

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 entidade de serviço (aplicativo) 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.

  1. No portal do Azure, vá para o recurso do Serviço Azure SignalR.

  2. Selecione Controlo de acesso (IAM) .

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

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

  4. Na guia Função, selecione SignalR App Server.

  5. Na guia Membros, selecione Usuário, grupo ou entidade de serviço e escolha Selecionar membros.

  6. Procure e selecione o aplicativo ao qual você deseja atribuir a função.

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

Configurar seu aplicativo

Servidor de aplicações

A prática recomendada é configurar a identidade e as credenciais em suas variáveis de ambiente:

Variável Description
AZURE_TENANT_ID A ID de locatário do Microsoft Entra.
AZURE_CLIENT_ID A ID do cliente (aplicativo) de um registro de aplicativo no locatário.
AZURE_CLIENT_SECRET Um segredo do cliente que foi gerado para o registro do aplicativo.
AZURE_CLIENT_CERTIFICATE_PATH Um caminho para um certificado e um par de chaves privadas no formato PEM ou PFX, que pode autenticar o registro do aplicativo.
AZURE_USERNAME O nome de usuário, também conhecido como Nome Principal do Usuário (UPN), de uma conta de usuário do Microsoft Entra.
AZURE_PASSWORD A senha da conta de usuário do Microsoft Entra. Uma senha não é suportada para contas com autenticação multifator habilitada.

Você pode usar DefaultAzureCredential ou EnvironmentCredential para configurar seus pontos de extremidade do Serviço Azure SignalR. Aqui está o código para DefaultAzureCredential:

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
    };
});

Aqui está o código para EnvironmentCredential:

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
    };
});

Para saber como DefaultAzureCredential funciona, consulte Classe DefaultAzureCredential.

Usar credenciais específicas do ponto de extremidade

Na sua organização, talvez você queira usar credenciais diferentes para pontos de extremidade diferentes.

Nesse cenário, você pode usar ClientSecretCredential ou ClientCertificateCredential:

services.AddSignalR().AddAzureSignalR(option =>
{
    var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
    var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");

    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
        new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
    };
});

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 identidades de aplicativo do Microsoft Entra para acessar seus recursos do Serviço Azure SignalR.

Primeiro, você precisa especificar o URI de serviço do Serviço Azure SignalR. A chave do URI do serviço é serviceUri. Ele começa com um prefixo de nome de conexão (que assume AzureSignalRConnectionStringcomo padrão ) e um separador. O separador é um sublinhado (__) no portal do Azure e dois pontos (:) no arquivo local.settings.json . Você pode personalizar o nome da conexão usando a propriedade ConnectionStringSettingbinding . Continue lendo para encontrar a amostra.

Em seguida, você escolhe se deseja configurar a identidade do aplicativo Microsoft Entra em variáveis de ambiente predefinidas ou em variáveis especificadas pelo SignalR.

Configurar uma identidade em variáveis de ambiente predefinidas

Consulte Variáveis de ambiente para obter a lista de variáveis de ambiente predefinidas. Quando você tiver vários serviços, recomendamos que use a mesma identidade de aplicativo, para que não seja necessário configurar a identidade para cada serviço. Outros serviços também podem usar essas variáveis de ambiente, com base nas configurações desses serviços.

Por exemplo, para usar credenciais secretas do cliente, configure a identidade da seguinte forma no arquivo local.settings.json :

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
    "AZURE_CLIENT_ID": "...",
    "AZURE_CLIENT_SECRET": "...",
    "AZURE_TENANT_ID": "..."
  }
}

No portal do Azure, adicione as configurações da seguinte maneira:

 <CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...

Configurar uma identidade em variáveis especificadas pelo SignalR

As variáveis especificadas pelo SignalR compartilham o mesmo prefixo de chave com a serviceUri chave. Aqui está a lista de variáveis que você pode usar:

  • clientId
  • clientSecret
  • tenantId

Aqui estão os exemplos para usar credenciais secretas do cliente no arquivo 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": "..."
  }
}

No portal do Azure, adicione as configurações da seguinte maneira:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...

Próximos passos

Veja os seguintes artigos relacionados: