Como gerar a URL de acesso para clientes
Um cliente, seja ele um navegador 💻, um aplicativo móvel 📱 ou um dispositivo IoT 💡, usa uma URL de Acesso ao Cliente para se conectar e autenticar com seu recurso.
A URL segue o padrão abaixo:
- Para clientes MQTT, é
wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>
. - Para todos os outros clientes, é
wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>
.
Este artigo mostra várias maneiras de obter a URL de acesso para cliente.
- Para um início rápido, copie uma do portal do Azure
- Para desenvolvimento, gere o valor usando o SDK do servidor Web PubSub
- Se você estiver usando o Microsoft Entra ID, também pode invocar a API REST Generate Client Token
Copiar do portal do Azure
Na guia “Chaves” no portal do Azure, há uma ferramenta “Gerador de URL para cliente” para gerar rapidamente uma URL de acesso para cliente para você, conforme mostrado no diagrama a seguir. A entrada de valores aqui não é armazenada.
Observe que, para clientes MQTT, você deve selecionar "Cliente MQTT" no menu suspenso na frente da caixa de texto "URL de Acesso para Cliente".
Gerar do SDK de serviço
A mesma URL de acesso para cliente pode ser gerada usando o SDK do servidor Web PubSub.
Siga Introdução ao SDK do servidor para criar um objeto
WebPubSubServiceClient
service
Gere a URL de acesso para cliente chamando
WebPubSubServiceClient.getClientAccessToken
:Gerar o token de acesso do cliente
// for web pubsub native clients let token = await serviceClient.getClientAccessToken(); // for mqtt clients let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
Configurar a ID do usuário
let token = await serviceClient.getClientAccessToken({ userId: "user1" });
Configurar o tempo de vida do token
let token = await serviceClient.getClientAccessToken({ expirationTimeInMinutes: 5, });
Configurar uma função que pode unir o grupo
group1
diretamente quando ele se conecta usando essa URL de acesso para clientelet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.joinLeaveGroup.group1"], });
Configurar uma função que permita ao cliente enviar mensagens para o grupo
group1
diretamente quando se conectar usando essa URL de acesso para clientelet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.sendToGroup.group1"], });
Configurar um grupo
group1
que o cliente ingressa depois de se conectar usando essa URL de acesso para clientelet token = await serviceClient.getClientAccessToken({ groups: ["group1"], });
Em código do mundo real, geralmente temos um lado servidor para hospedar a lógica que gera a URL de acesso para cliente. Quando uma solicitação de cliente entra, o lado servidor pode usar o fluxo de trabalho de autenticação/autorização geral para validar a solicitação do cliente. Somente solicitações de cliente válidas podem receber de volta a URL acesso para cliente.
Gerar a partir da API REST :generateToken
Você também pode usar o Microsoft Entra ID e gerar o token invocando a API REST de Geração de Token de Cliente.
Observação
O Web PubSub não recomenda que você crie tokens do Microsoft Entra ID para entidades de serviço do Microsoft Entra ID manualmente. Isso ocorre porque cada token do Microsoft Entra ID tem curta duração, normalmente expirando em uma hora. Após esse tempo, você precisará gerar manualmente um token de substituição do Microsoft Entra ID. Em vez disso, use nossos SDKs que geram e substituem automaticamente tokens expirados do Microsoft Entra ID para você.
Siga Autorizar a partir do aplicativo para habilitar o Microsoft Entra ID.
Obtenha o token do Microsoft Entra.
Usar o token do Microsoft Entra para invocar
:generateToken
.Reúna as seguintes informações:
Nome do valor Como obter o valor TenantId TenantId é o valor da ID do diretório (locatário) no painel Visão geral do aplicativo que você registrou. ClientId ClientId é o valor da ID do aplicativo (cliente) do painel Visão geral do aplicativo que você registrou. ClientSecret ClientSecret é o valor do segredo do cliente que você acabou de adicionar na etapa nº 1 Obter o token do Microsoft Entra ID da plataforma de identidade da Microsoft
Usamos a ferramenta CURL para mostrar como invocar as APIs REST. A ferramenta é agrupada no Windows 10/11 e você pode instalar a ferramenta após a instalação do CURL.
# set necessary values, replace the placeholders with your actual values export TenantId=<your_tenant_id> export ClientId=<your_client_id> export ClientSecret=<your_client_secret> curl -X POST "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_id=$ClientId" \ --data-urlencode "client_secret=$ClientSecret" \ --data-urlencode "scope=https://webpubsub.azure.com/.default"
O comando curl acima envia uma solicitação POST ao ponto de extremidade de identidade da Microsoft para obter o Token do Microsoft Entra ID de volta. Na resposta, você verá o token do Microsoft Entra ID no campo
access_token
. Copie e armazene-a para uso posterior.Usar o token do Microsoft Entra ID para invocar
:generateToken
# Replace the values in {} with your actual values. export Hostname={your_service_hostname} export Hub={your_hub} export Microsoft_Entra_Token={Microsoft_entra_id_token_from_previous_step} curl -X POST "https://$Hostname/api/hubs/$Hub/:generateToken?api-version=2024-01-01" \ -H "Authorization: Bearer $Microsoft_Entra_Token" \ -H "Content-Type: application/json"
Se você precisar gerar o token para clientes MQTT, acrescente o parâmetro
clientType=mqtt
à URL:export Hostname={your_service_hostname} export Hub={your_hub} export Microsoft_Entra_Token={Microsoft_entra_id_token_from_previous_step} curl -X POST "https://$Hostname/api/hubs/$Hub/:generateToken?api-version=2024-01-01&clientType=mqtt" \ -H "Authorization: Bearer $Microsoft_Entra_Token" \ -H "Content-Type: application/json"
Depois de executar o comando
cURL
, você deve obter uma resposta como esta:{ "token": "ABCDEFG.ABC.ABC" }