Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Serviço do Azure SignalR dá suporte à ID do Microsoft Entra para autorizar solicitações com aplicativos do Microsoft Entra.
Este artigo explica como configurar seu recurso e código para autenticar solicitações para o recurso usando um aplicativo do Microsoft Entra.
Registre um aplicativo no Microsoft Entra ID
A primeira etapa é registrar um aplicativo na ID do Microsoft Entra:
Após registrar seu aplicativo, você poderá 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.
Adicionar credenciais
Depois de registrar um aplicativo, você pode adicionar certificados, segredos do cliente (uma cadeia de caracteres) ou credenciais de identidade federadas como credenciais para o registro de aplicativo cliente confidencial. As credenciais permitem que seu aplicativo se autentique como ele mesmo, não exigindo nenhuma interação de um usuário em runtime e são usadas por aplicativos cliente confidenciais que acessam uma API Web.
Adicionar atribuições de função no portal do Azure
As etapas a seguir descrevem como atribuir uma função do SignalR App Server a uma entidade de serviço ou a uma identidade gerenciada para um recurso do Serviço do Azure SignalR. Para obter etapas detalhadas, consulte Atribuir funções do Azure usando o portal do Azure.
Observação
Você pode atribuir uma função 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.
No painel à esquerda, selecione Controle de acesso (IAM).
Selecione Adicionar>Adicionar atribuição de função.
Na guia Função, selecione Servidor do Aplicativo SignalR. Outras funções internas do Serviço do Azure SignalR dependem do cenário.
Função Descrição Caso de uso Servidor de Aplicativos do 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 do 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 do Azure SignalR 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 Gerenciamento do Azure SignalR para gerenciar conexões e grupos, mas ele não faz conexões de servidor nem lida com solicitações de negociação. Leitor de API REST do SignalR Acesso somente leitura às APIs REST do plano de dados. Usado quando você grava uma ferramenta de monitoramento que chama as APIs REST somente leitura. Selecione Próximo.
Para o aplicativo Microsoft Entra:
- Na linha Atribuir acesso a, selecione Usuário, grupo ou entidade de serviço.
- Na linha Membros , escolha selecionar membros e escolha a identidade na janela pop-up.
Para identidade gerenciada para recursos do Azure:
- Na opção Atribuir acesso à linha, selecione Identidade gerenciada.
- Na linha Membros , escolha selecionar membros e escolha o aplicativo na janela pop-up.
Selecione Próximo.
Examine sua atribuição e selecione Examinar + atribuir para confirmar a atribuição de função.
Importante
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, confira:
- 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 do Azure SignalR para C#
O SDK do servidor do Azure SignalR aproveita a biblioteca Azure.Identity para gerar tokens para se conectar aos recursos. Clique para explorar usos detalhados.
Observação
O tenantId deve corresponder ao tenantId do tenant onde o 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 o aplicativo Microsoft Entra com o 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 do 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 (versão prévia).
Observação
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 uma clientAssertion e usá-la para trocar por um clientToken para autenticação.
O appClientId e tenantId devem ser o aplicativo enterprise que você provisionou no locatário do recurso do SignalR.
Usar vários pontos de extremidade
As credenciais podem diferir entre os diferentes endpoints.
Neste exemplo, o SDK do Azure SignalR se conectará ao resource1 usando o segredo do cliente e ao resource2 usando um 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
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:
clientIdclientSecrettenantId
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: