Como gerar URL de acesso para clientes
Um cliente, seja um navegador 💻, um aplicativo 📱móvel ou um dispositivo 💡IoT, usa uma URL de Acesso para Cliente para se conectar e autenticar com seu recurso.
O 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 início rápido, copie um 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 poderá invocar a API REST Gerar Token de Cliente
Copiar do portal do Azure
Na guia Chaves no portal do Azure, há uma ferramenta Gerador de URL do Cliente para gerar rapidamente uma URL de Acesso para Cliente para você, conforme mostrado no diagrama a seguir. Os valores inseridos aqui não são armazenados.
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 a partir do SDK do 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
WebPubSubServiceClient
objetoservice
Gere URL de Acesso para Cliente chamando
WebPubSubServiceClient.getClientAccessToken
:Gerar token de acesso para cliente
// for web pubsub native clients let token = await serviceClient.getClientAccessToken(); // for mqtt clients let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
Configurar ID de 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 possa ingressar diretamente no grupo
group1
quando ele se conectar usando essa URL de Acesso para Clientelet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.joinLeaveGroup.group1"], });
Configure uma função para a qual o cliente possa enviar mensagens diretamente ao grupo
group1
quando se conectar usando essa URL de Acesso para Clientelet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.sendToGroup.group1"], });
Configurar um grupo
group1
ao qual o cliente ingressa depois de se conectar usando essa URL de Acesso para Clientelet token = await serviceClient.getClientAccessToken({ groups: ["group1"], });
No código do mundo real, geralmente temos um lado do servidor para hospedar a lógica que gera a URL de Acesso para Cliente. Quando uma solicitação de cliente chega, o lado do servidor pode usar o fluxo de trabalho geral de autenticação/autorização para validar a solicitação do cliente. Somente solicitações de cliente válidas podem obter a URL de Acesso para Cliente de volta.
Gerar a partir da API REST :generateToken
Você também pode usar o Microsoft Entra ID e gerar o token invocando Generate Client Token REST API.
Nota
O Web PubSub não recomenda que você crie tokens de ID do Microsoft Entra para entidades de serviço do Microsoft Entra ID manualmente. Isso ocorre porque cada token de ID do Microsoft Entra é de curta duração, normalmente expirando dentro de uma hora. Após esse período, você deve gerar manualmente um token de ID do Microsoft Entra de substituição. Em vez disso, use nossos SDKs que geram e substituem automaticamente tokens de ID do Microsoft Entra expirados para você.
Siga Autorizar do aplicativo para habilitar o Microsoft Entra ID.
Obtenha o token Microsoft Entra.
Use o token do Microsoft Entra para invocar
:generateToken
o .Recolha as seguintes informações:
Nome do valor Como obter o valor TenantId TenantId é o valor de Directory (tenant) ID no painel Visão geral do aplicativo que você registrou. ClientId ClientId é o valor do 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 #1 Obtenha o token Microsoft Entra ID da plataforma de identidade da Microsoft
Usamos a ferramenta CURL para mostrar como invocar as APIs REST. A ferramenta está incluída no Windows 10/11, e você pode instalá-la após Instalar o 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 para o ponto de extremidade de identidade da Microsoft para obter o token de ID do Microsoft Entra de volta. Na resposta, você verá o token de ID do Microsoft Entra no
access_token
campo. Copie e guarde-o para utilização posterior.Use o token de ID do Microsoft Entra 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, anexe o
clientType=mqtt
parâmetro à 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
cURL
comando, você deve obter uma resposta como esta:{ "token": "ABCDEFG.ABC.ABC" }