Comparteix a través de


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.

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".

Captura de pantalla del generador de URL del cliente de Web PubSub.

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.

  1. Siga Introducción al SDK de servidor para crear un objeto WebPubSubServiceClient de service

  2. 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 cliente

      let 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 cliente

      let 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 cliente

      let 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.

  1. Siga Autorizar desde la aplicación para habilitar Microsoft Entra ID.

  2. Obtenga el token de Microsoft Entra.

  3. Use el token de Microsoft Entra ID para invocar :generateToken.

  4. 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
  5. 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 elaccess_token campo. Cópiela y almacénela para su uso posterior.

  6. 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"
    }