Delen via


Clienttoegangs-URL genereren voor de clients

Een client, of het nu gaat om een browser 💻, een mobiele app 📱of een IoT-apparaat 💡, gebruikt een URL voor clienttoegang om verbinding te maken en te verifiëren met uw resource.

De URL volgt het onderstaande patroon:

  • Voor MQTT-clients is het wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>.
  • Voor alle andere clients is het wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>.

In dit artikel vindt u verschillende manieren om de URL voor clienttoegang op te halen.

  • Kopieer er een uit de Azure-portal om snel aan de slag te gaan
  • Genereer de waarde voor ontwikkeling met behulp van de Web PubSub-server-SDK
  • Als u Microsoft Entra-id gebruikt, kunt u ook de REST API voor het genereren van clienttoken aanroepen

Kopiëren vanuit Azure Portal

Op het tabblad Sleutels in Azure Portal is er een hulpprogramma voor client-URL-generator waarmee u snel een clienttoegangs-URL kunt genereren, zoals wordt weergegeven in het volgende diagram. De invoer van waarden wordt hier niet opgeslagen.

Houd er rekening mee dat u voor MQTT-clients 'MQTT-client' moet selecteren in de vervolgkeuzelijst vóór het tekstvak 'URL voor clienttoegang'.

Schermopname van de Web PubSub Client URL Generator.

Genereren vanuit service-SDK

Dezelfde URL voor clienttoegang kan worden gegenereerd met behulp van de Web PubSub-server-SDK.

  1. Volg Aan de slag met server-SDK om een WebPubSubServiceClient object te maken service

  2. Genereer clienttoegangs-URL door het volgende aan te roepen WebPubSubServiceClient.getClientAccessToken:

    • Clienttoegangstoken genereren

      // for web pubsub native clients
      let token = await serviceClient.getClientAccessToken();
      
      // for mqtt clients
      let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
      
    • Gebruikers-id configureren

      let token = await serviceClient.getClientAccessToken({ userId: "user1" });
      
    • De levensduur van het token configureren

      let token = await serviceClient.getClientAccessToken({
        expirationTimeInMinutes: 5,
      });
      
    • Een rol configureren die rechtstreeks lid kan worden van een groep group1 wanneer deze verbinding maakt met behulp van deze URL voor clienttoegang

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.joinLeaveGroup.group1"],
      });
      
    • Een rol configureren die de client rechtstreeks naar de groep group1 kan verzenden wanneer deze verbinding maakt met behulp van deze CLIENT Access-URL

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.sendToGroup.group1"],
      });
      
    • Een groep group1 configureren waaraan de client wordt toegevoegd zodra deze verbinding maakt met behulp van deze CLIENT Access-URL

      let token = await serviceClient.getClientAccessToken({
        groups: ["group1"],
      });
      

In echte code hebben we meestal een serverzijde om de logica te hosten die de URL voor clienttoegang genereert. Wanneer een clientaanvraag binnenkomt, kan de serverzijde de algemene verificatie-/autorisatiewerkstroom gebruiken om de clientaanvraag te valideren. Alleen geldige clientaanvragen kunnen de URL voor clienttoegang terughalen.

Genereren vanuit REST API :generateToken

U kunt ook Microsoft Entra-id gebruiken en het token genereren door de REST API voor het genereren van clienttoken aan te roepen.

Notitie

Web PubSub raadt u niet aan om Handmatig Microsoft Entra ID-tokens te maken voor Service-principals voor Microsoft Entra ID. Dit komt doordat elk Microsoft Entra ID-token kort duurt, meestal binnen één uur verloopt. Na deze tijd moet u handmatig een vervangend Microsoft Entra ID-token genereren. Gebruik in plaats daarvan onze SDK's die automatisch verlopen Microsoft Entra ID-tokens voor u genereren en vervangen.

  1. Volg Autoriseren vanuit de toepassing om Microsoft Entra-id in te schakelen.

  2. Haal het Microsoft Entra-token op.

  3. Gebruik het Microsoft Entra-token om aan te roepen :generateToken.

  4. Verzamel de volgende informatie:

    Waardenaam De waarde ophalen
    TenantId TenantId is de waarde van map-id (tenant) in het deelvenster Overzicht van de toepassing die u hebt geregistreerd.
    ClientId ClientId is de waarde van de toepassings-id (client) in het deelvenster Overzicht van de toepassing die u hebt geregistreerd.
    ClientSecret ClientSecret is de waarde van het clientgeheim dat u zojuist hebt toegevoegd in stap 1
  5. Het Microsoft Entra ID-token ophalen van het Microsoft Identity Platform

    We gebruiken het CURL-hulpprogramma om te laten zien hoe u de REST API's aanroept. Het hulpprogramma is gebundeld in Windows 10/11 en u kunt het hulpprogramma installeren na Curl installeren.

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

    Met de bovenstaande curl-opdracht wordt een POST-aanvraag naar het Microsoft-identiteitseindpunt verzonden om het Microsoft Entra ID-token terug te krijgen. In het antwoord ziet u het Microsoft Entra ID-token in access_token het veld. Kopieer en bewaar deze voor later gebruik.

  6. Het Microsoft Entra ID-token gebruiken om aan te roepen :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"
    

    Als u het token voor MQTT-clients wilt genereren, voegt u de clientType=mqtt parameter toe aan de 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"
    

    Nadat u de cURL opdracht hebt uitgevoerd, krijgt u een antwoord als volgt:

    {
      "token": "ABCDEFG.ABC.ABC"
    }