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:
No portal do Azure, procure e selecione Microsoft Entra ID.
Em Gerir, selecione Registos das aplicações.
Selecione Novo registo. O painel Registrar um aplicativo é aberto.
Em Nome, insira um nome para exibição para seu aplicativo.
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.
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:
Em Gerenciar, selecione Certificados & segredos.
Na guia Segredos do cliente, selecione Novo segredo do cliente.
Insira uma descrição para o segredo do cliente e escolha um tempo de expiração.
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.
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.
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.
Na guia Membros, selecione Usuário, grupo ou entidade de serviço e escolha Selecionar membros.
Procure e selecione o aplicativo ao qual você deseja atribuir a função.
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
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 AzureSignalRConnectionString
como 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 ConnectionStringSetting
binding . 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: