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:
No portal do Azure, procure e clique em Microsoft Entra ID.
Em Gerenciar, selecione Registros de aplicativo.
Selecione Novo registro. O painel Registrar um aplicativo será aberto.
Em Nome, insira um nome de exibição para o seu aplicativo.
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.
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:
Em Gerenciar, selecione Certificados e segredos.
Na guia Segredos do cliente, selecione Novo segredo do cliente.
Insira uma descrição para o segredo do cliente e escolha um prazo de validade.
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.
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.
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 Usuário, grupo ou entidade de serviço e, em seguida, selecione Selecionar membros.
Procure e selecione o aplicativo para o qual você deseja atribuir a função.
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
É 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: