Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Serviço Azure SignalR dá suporte à ID do Microsoft Entra para autorizar solicitações com aplicativos Microsoft Entra.
Este artigo explica como configurar seu recurso e código para autenticar solicitações para o recurso usando um aplicativo Microsoft Entra.
Registar uma aplicação no Microsoft Entra ID
O primeiro passo é Registar uma aplicação no Microsoft Entra ID:
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.
Adicionar credenciais
Depois de registrar um aplicativo, você pode adicionar certificados, segredos de cliente (uma cadeia de caracteres) ou credenciais de identidade federada como credenciais ao registro confidencial do aplicativo cliente. As credenciais permitem que seu aplicativo se autentique como ele mesmo, não exigindo nenhuma interação de um usuário em tempo de execução, e são usadas por aplicativos cliente confidenciais que acessam uma API da Web.
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 ou uma identidade gerenciada para um recurso do Serviço SignalR do Azure. Para obter etapas detalhadas, consulte Atribuir funções do Azure usando o portal do Azure.
Note
Você pode atribuir uma função 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.
No painel esquerdo, selecione Controlo de acesso (IAM).
Selecione Adicionar>Adicionar atribuição de função.
Na guia Função, selecione SignalR App Server. Outras funções internas do Serviço Azure SignalR dependem do seu cenário.
Funções Description Caso de uso Servidor de aplicativos SignalR Acesso às APIs que criam conexões de servidor e geram chaves. Mais comumente usado para um servidor de aplicativos com um recurso do Azure SignalR em execução no modo Padrão. Proprietário do Serviço SignalR Acesso total a todas as APIs de plano de dados, incluindo APIs REST, as APIs que criam conexões de servidor e as APIs que geram chaves/tokens. Usado para um servidor de negociação com um recurso do Serviço SignalR do Azure em execução no modo sem servidor. Ele requer permissões de API REST e permissões de API de autenticação. Proprietário da API REST do SignalR Acesso total às APIs REST do plano de dados. Usado para o SDK de Gestão do Azure SignalR para gerir conexões e grupos, mas não efetua conexões ao servidor nem trata pedidos de negociação. Leitor de API SignalR REST Acesso só de leitura às APIs REST do plano de dados. Usado quando se escreve uma ferramenta de monitorização que chama APIs REST de leitura única. Selecione Seguinte.
Para a aplicação Microsoft Entra:
- Na linha Atribuir acesso a , selecione Usuário, grupo ou entidade de serviço.
- Na linha Membros , escolha selecionar membros e, em seguida, escolha a identidade na janela pop-up.
Para identidade gerenciada para recursos do Azure:
- Na linha Atribuir acesso a , selecione Identidade gerenciada.
- Na linha Membros , escolha selecionar membros e, em seguida, escolha o aplicativo na janela pop-up.
Selecione Seguinte.
Reveja a sua atribuição e, em seguida, selecione Rever + atribuir para confirmar a atribuição de função.
Important
As atribuições de função recém-adicionadas podem levar até 30 minutos para serem propagadas.
Para saber mais sobre como atribuir e gerenciar funções do Azure, consulte:
- 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 SDK do servidor de aplicativos Microsoft.Azure.SignalR para C#
SDK do servidor Azure SignalR para C#
O SDK do servidor Azure SignalR aproveita a biblioteca Azure.Identity para gerar tokens para conexão com recursos. Clique para explorar usos detalhados.
Note
O tenantId deve corresponder ao tenantId do locatário onde seu recurso SignalR está.
Usar o aplicativo Microsoft Entra com certificado
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Usar a aplicação Microsoft Entra com segredo de cliente
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Usar o aplicativo Microsoft Entra com identidade federada
No caso de sua organização desabilitar o uso de segredo/certificado do cliente, você pode configurar o aplicativo para confiar em uma identidade gerenciada para autenticação.
Para saber mais sobre isso, consulte Configurar um aplicativo para confiar em uma identidade gerenciada (visualização).
Note
Configurar um aplicativo para confiar em uma identidade gerenciada é um recurso de visualização.
services.AddSignalR().AddAzureSignalR(option =>
{
var msiCredential = new ManagedIdentityCredential("msiClientId");
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Entra ID US Government: api://AzureADTokenExchangeUSGov
// Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
return response.Token;
});
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Essa credencial usará a identidade gerenciada atribuída pelo usuário para gerar um clientAssertion e usá-la para trocar por um clientToken para autenticação.
O appClientId e tenantId deve ser o aplicativo empresarial que você provisionou no locatário do recurso SignalR.
Usar vários pontos de extremidade
As credenciais podem ser diferentes para diferentes endpoints.
Neste exemplo, o SDK do Azure SignalR se conectará ao resource1 utilizando o segredo do cliente e ao resource2 utilizando o certificado.
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
Mais exemplos podem ser encontrados neste link de exemplo
Ligaçõ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 binding ConnectionStringSetting. 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:
clientIdclientSecrettenantId
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: