Dela via


Så här genererar du klientåtkomst-URL för klienterna

En klient, vare sig det är en webbläsare 💻, en mobilapp 📱eller en IoT-enhet 💡, använder en URL för klientåtkomst för att ansluta och autentisera med din resurs.

URL:en följer mönstret nedan:

  • För MQTT-klienter är wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>det .
  • För alla andra klienter är wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>det .

Den här artikeln visar flera sätt att hämta URL:en för klientåtkomst.

  • För snabbstart kopierar du en från Azure Portal
  • För utveckling genererar du värdet med hjälp av Web PubSub Server SDK
  • Om du använder Microsoft Entra-ID kan du också anropa REST API för generera klienttoken

Kopiera från Azure Portal

På fliken Nycklar i Azure Portal finns det ett verktyg för klient-URL-generator för att snabbt generera en URL för klientåtkomst åt dig, som du ser i följande diagram. Värden som matas in här lagras inte.

Observera att för MQTT-klienter bör du välja "MQTT-klient" i den nedrullningsbara menyn framför textrutan "Klientåtkomst-URL".

Skärmbild av url-generatorn för Web PubSub-klienten.

Generera från tjänst-SDK

Samma URL för klientåtkomst kan genereras med hjälp av Web PubSub Server SDK.

  1. Följ Komma igång med server-SDK för att skapa ett WebPubSubServiceClient objekt service

  2. Generera URL för klientåtkomst genom att anropa WebPubSubServiceClient.getClientAccessToken:

    • Generera klientåtkomsttoken

      // for web pubsub native clients
      let token = await serviceClient.getClientAccessToken();
      
      // for mqtt clients
      let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
      
    • Konfigurera användar-ID

      let token = await serviceClient.getClientAccessToken({ userId: "user1" });
      
    • Konfigurera livslängden för token

      let token = await serviceClient.getClientAccessToken({
        expirationTimeInMinutes: 5,
      });
      
    • Konfigurera en roll som kan ansluta till gruppen group1 direkt när den ansluter med hjälp av den här URL:en för klientåtkomst

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.joinLeaveGroup.group1"],
      });
      
    • Konfigurera en roll som klienten kan skicka meddelanden till gruppen group1 direkt när den ansluter med hjälp av den här URL:en för klientåtkomst

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.sendToGroup.group1"],
      });
      
    • Konfigurera en grupp group1 som klienten ansluter till när den ansluter med hjälp av den här URL:en för klientåtkomst

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

I verklig kod har vi vanligtvis en serversida som är värd för logiken som genererar URL:en för klientåtkomst. När en klientbegäran kommer in kan serversidan använda arbetsflödet för allmän autentisering/auktorisering för att verifiera klientbegäran. Endast giltiga klientbegäranden kan få tillbaka URL:en för klientåtkomst.

Generera från REST API :generateToken

Du kan också använda Microsoft Entra-ID och generera token genom att anropa REST API för generera klienttoken.

Kommentar

Web PubSub rekommenderar inte att du skapar Microsoft Entra-ID-token för Microsoft Entra ID-tjänstens huvudnamn manuellt. Detta beror på att varje Microsoft Entra-ID-token är kortlivad och vanligtvis upphör att gälla inom en timme. Efter den här tiden måste du manuellt generera en ersättningstoken för Microsoft Entra-ID. Använd i stället våra SDK:er som automatiskt genererar och ersätter utgångna Microsoft Entra-ID-token åt dig.

  1. Följ Auktorisera från programmet för att aktivera Microsoft Entra-ID.

  2. Hämta Microsoft Entra-token.

  3. Använd Microsoft Entra-token för att anropa :generateToken.

  4. Samla in följande information:

    Värdenamn Så här hämtar du värdet
    TenantId TenantId är värdet för katalog-ID (klientorganisation) i fönstret Översikt för det program som du registrerade.
    ClientId ClientId är värdet för program-ID (klient)-ID från fönstret Översikt för det program som du registrerade.
    ClientSecret ClientSecret är värdet för den klienthemlighet som du precis lade till i steg 1
  5. Hämta Microsoft Entra-ID-token från Microsofts identitetsplattform

    Vi använder CURL-verktyget för att visa hur du anropar REST-API:erna. Verktyget paketeras i Windows 10/11 och du kan installera verktyget efter Install 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"
    
    

    Curl-kommandot ovan skickar en POST-begäran till Microsofts identitetsslutpunkt för att få tillbaka Microsoft Entra-ID-token . I svaret visas Microsoft Entra ID-token i access_token fältet . Kopiera och spara den för senare användning.

  6. Använda Microsoft Entra-ID-token för att anropa :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"
    

    Om du behöver generera token för MQTT-klienter lägger du till parametern clientType=mqtt i URL:en:

    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"
    

    När du har kört cURL kommandot bör du få ett svar som liknar detta:

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