Cómo generar la dirección URL de acceso de cliente para los clientes
Un cliente, ya sea un explorador 💻, una aplicación móvil 📱 o un dispositivo IoT 💡, usa una dirección URL de acceso de cliente para conectarse y autenticarse con el recurso.
La dirección URL sigue el siguiente patrón:
- En el caso de los clientes MQTT, es
wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>
. - Para todos los demás clientes, es
wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>
.
En este artículo se muestran varias maneras de obtener la dirección URL de acceso de cliente.
- Para el inicio rápido, copie uno desde Azure Portal.
- Para el desarrollo, genere el valor mediante SDK de servidor de Web PubSub
- Si usa Microsoft Entra ID, también puede invocar la API de REST de generación de tokens de cliente
Copia desde Azure Portal
En la pestaña Claves de Azure Portal, hay una herramienta Generador de direcciones URL de cliente para generar rápidamente una dirección URL de acceso de cliente, como se muestra en el diagrama siguiente. Los valores que se introducen aquí no se almacenan.
Tenga en cuenta que para los clientes MQTT, debe seleccionar "Cliente MQTT" en el menú desplegable delante del cuadro de texto "Dirección URL de acceso de cliente".
Generación desde el SDK de servicio
La misma dirección URL de acceso de cliente se puede generar mediante el SDK del servidor Web PubSub.
Siga Introducción al SDK de servidor para crear un objeto
WebPubSubServiceClient
deservice
Genere la dirección URL de acceso de cliente llamando a
WebPubSubServiceClient.getClientAccessToken
:Generar dirección de token de acceso de cliente
// for web pubsub native clients let token = await serviceClient.getClientAccessToken(); // for mqtt clients let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
Configuración del identificador de usuario
let token = await serviceClient.getClientAccessToken({ userId: "user1" });
Configuración de la duración del token
let token = await serviceClient.getClientAccessToken({ expirationTimeInMinutes: 5, });
Configurar un rol que pueda unirse al grupo
group1
directamente cuando se conecta mediante esta dirección URL de acceso de clientelet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.joinLeaveGroup.group1"], });
Configurar un rol que el cliente puede enviar mensajes para agrupar
group1
directamente cuando se conecta mediante esta dirección URL de acceso de clientelet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.sendToGroup.group1"], });
Configurar un grupo
group1
que el cliente se une una vez que se conecta mediante esta dirección URL de acceso de clientelet token = await serviceClient.getClientAccessToken({ groups: ["group1"], });
En el código real, normalmente tenemos un lado servidor para hospedar la lógica que genera la dirección URL de acceso de cliente. Cuando se produce una solicitud de cliente, el lado servidor puede usar el flujo de trabajo de autenticación y autorización general para validar la solicitud de cliente. Solo las solicitudes de cliente válidas pueden devolver la dirección URL de acceso de cliente.
Generar a partir de la API de REST :generateToken
También puede usar el identificador de Microsoft Entra ID y generar el token invocando Generar API de REST de token de cliente.
Nota:
Web PubSub no recomienda crear tokens de Microsoft Entra ID para los principales de servicio de Microsoft Entra ID manualmente. Esto se debe a que cada token de Microsoft Entra ID es de corta duración y, por lo general, caduca en una hora. Después de este tiempo, debe generar manualmente un token de reemplazo de Microsoft Entra ID. En su lugar, use nuestros SDK que generan y reemplazan automáticamente los tokens de Microsoft Entra ID expirados.
Siga Autorizar desde la aplicación para habilitar Microsoft Entra ID.
Obtenga el token de Microsoft Entra.
Use el token de Microsoft Entra ID para invocar
:generateToken
.Recopile la información siguiente:
Nombre del valor Obtención del valor TenantId TenantId es el valor de id. de directorio (inquilino) en el panel Información general de la aplicación que registró. ClientId ClientId es el valor de id. de aplicación (cliente) desde el panel Información general de la aplicación que registró. ClientSecret ClientSecret es el valor del secreto de cliente que acaba de agregar en el paso 1 Obtención del token de Microsoft Entra ID de la plataforma de identidad de Microsoft
Usamos herramienta de CURL para mostrar cómo invocar las API de REST. La herramienta se agrupa en Windows 10/11 y podría instalar la herramienta siguiendo Instalar CURL.
# set neccessory 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"
El comando curl anterior envía una solicitud POST al punto final de identidad de Microsoft para obtener el token de Microsoft Entra ID token. En la respuesta, verá el token de Microsoft Entra ID en el
access_token
campo. Cópiela y almacénela para su uso posterior.Usar el token de 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"
Si necesita generar el token para los clientes MQTT, anexe el
clientType=mqtt
parámetro a la dirección 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"
Después de ejecutar el
cURL
comando, debería obtener una respuesta similar a la siguiente:{ "token": "ABCDEFG.ABC.ABC" }