Compartilhar via


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

O Serviço do Azure SignalR dá suporte ao Microsoft Entra ID para autorizar solicitações dos aplicativos 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 um aplicativo do Microsoft Entra.

Registrar um aplicativo

A primeira etapa é registrar um aplicativo do Microsoft Entra:

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

  2. Em Gerenciar, selecione Registros de aplicativo.

  3. Selecione Novo registro. O painel Registrar um aplicativo será aberto.

    Captura de tela do painel para registrar um aplicativo.

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

  5. Selecione Registrar para confirmar o registro.

Depois de registrar seu aplicativo, você pode encontrar a ID do aplicativo (cliente) e os valores de 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 de visão geral de um aplicativo registrado.

Para saber mais sobre como registrar um aplicativo, confira Início Rápido: Registrar um aplicativo na plataforma de identidade da Microsoft.

Adicionar credenciais

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

Segredo do cliente

O aplicativo requer um segredo do cliente para provar sua identidade ao solicitar um token. Para criar um segredo do cliente, siga estas etapas:

  1. Em Gerenciar, selecione Certificados e segredos.

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

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

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

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

    Observação

    O segredo será exibido apenas uma vez.

Certificado

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

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

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

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 entidade de serviço (aplicativo) 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 Usuário, grupo ou entidade de serviço e, em seguida, selecione Selecionar membros.

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

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

É uma melhor prática configurar a identidade e as credenciais em suas variáveis de ambiente:

Variável Descrição
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 o par de certificado e de chaves privadas no formato PEM ou PFX, que pode autenticar o registro de aplicativo.
AZURE_USERNAME O nome de usuário, também conhecido como UPN (Nome de Entidade de Usuário), de uma conta de usuário do Microsoft Entra.
AZURE_PASSWORD A senha da conta de usuário do Microsoft Entra. Não há suporte para uma senha nas contas com a autenticação multifator habilitada.

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

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

O código para EnvironmentCredential é o seguinte:

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

Para saber como o DefaultAzureCredential funciona, confira 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 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 identidades de aplicativo do Microsoft Entra para acessar os recursos do Serviço do Azure SignalR.

Primeiro, você precisa especificar o URI de serviço do Serviço do Azure SignalR. A chave do URI de serviço é serviceUri. Ela começa com um prefixo de nome de conexão (que usa o padrão AzureSignalRConnectionString) 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 de associação ConnectionStringSetting. Continue lendo para encontrar a amostra.

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

Configure uma identidade em variáveis de ambiente predefinidas

Confira Variáveis de ambiente para ver a lista de variáveis de ambiente predefinidas. Quando você tem vários serviços, é recomendável usar a mesma identidade do aplicativo para que não precise 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 as credenciais de segredo do cliente, configure a identidade da seguinte maneira 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 forma:

 <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 do SignalR

As variáveis especificadas do SignalR compartilham o mesmo prefixo de chave com a chave serviceUri. Esta é a lista de variáveis que você pode usar:

  • clientId
  • clientSecret
  • tenantId

Veja os exemplos para usar as credenciais de segredo 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 forma:

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

Próximas etapas

Confira os seguintes artigos relacionados: