Udostępnij za pośrednictwem


Jak wygenerować adres URL dostępu klienta dla klientów

Klient, tzn. przeglądarka💻, aplikacja 📱mobilna lub urządzenie 💡IoT, używa adresu URL dostępu klienta do nawiązywania połączenia i uwierzytelniania z zasobem.

Adres URL jest zgodny z poniższym wzorcem:

  • W przypadku klientów MQTT jest to wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>.
  • Dla wszystkich innych klientów jest to wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>.

W tym artykule przedstawiono kilka sposobów uzyskiwania adresu URL dostępu klienta.

  • Aby uzyskać szybki start, skopiuj jedną z witryny Azure Portal
  • Na potrzeby programowania wygeneruj wartość przy użyciu zestawu SDK serwera Web PubSub
  • Jeśli używasz identyfikatora Entra firmy Microsoft, możesz również wywołać interfejs API REST generowania tokenu klienta

Kopiowanie z witryny Azure Portal

Na karcie Klucze w witrynie Azure Portal istnieje narzędzie generatora adresów URL klienta umożliwiające szybkie wygenerowanie adresu URL dostępu klienta, jak pokazano na poniższym diagramie. Dane wejściowe wartości w tym miejscu nie są przechowywane.

Należy pamiętać, że w przypadku klientów MQTT należy wybrać pozycję "Klient MQTT" z menu rozwijanego przed polem tekstowym "Adres URL dostępu klienta".

Zrzut ekranu przedstawiający generator adresów URL klienta web PubSub.

Generowanie na podstawie zestawu SDK usługi

Ten sam adres URL dostępu klienta można wygenerować przy użyciu zestawu SDK serwera Web PubSub.

  1. Postępuj zgodnie z instrukcjami Wprowadzenie do zestawu SDK serwera, aby utworzyć WebPubSubServiceClient obiekt service

  2. Wygeneruj adres URL dostępu klienta, wywołując polecenie WebPubSubServiceClient.getClientAccessToken:

    • Generowanie tokenu dostępu klienta MQTT

      let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
      
    • Konfigurowanie identyfikatora użytkownika

      let token = await serviceClient.getClientAccessToken({ userId: "user1" });
      
    • Konfigurowanie okresu istnienia tokenu

      let token = await serviceClient.getClientAccessToken({
        expirationTimeInMinutes: 5,
      });
      
    • Konfigurowanie roli, która może dołączać grupę group1 bezpośrednio po nawiązaniu połączenia przy użyciu tego adresu URL dostępu klienta

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.joinLeaveGroup.group1"],
      });
      
    • Konfigurowanie roli, którą klient może wysyłać komunikaty do grupy group1 bezpośrednio po nawiązaniu połączenia przy użyciu tego adresu URL dostępu klienta

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.sendToGroup.group1"],
      });
      
    • Konfigurowanie grupy group1 przyłączonej przez klienta po nawiązaniu połączenia przy użyciu tego adresu URL dostępu klienta

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

W rzeczywistym kodzie zwykle po stronie serwera jest hostowana logika generująca adres URL dostępu klienta. Po wystąpieniu żądania klienta po stronie serwera można użyć ogólnego przepływu pracy uwierzytelniania/autoryzacji w celu zweryfikowania żądania klienta. Tylko prawidłowe żądania klienta mogą odzyskać adres URL dostępu klienta.

Wywoływanie interfejsu API REST "Generowanie tokenu klienta"

Możesz włączyć identyfikator Entra firmy Microsoft w usłudze i użyć tokenu Entra firmy Microsoft, aby wywołać interfejs API rest generowania tokenu klienta, aby uzyskać token do użycia przez klienta.

  1. Postępuj zgodnie z instrukcjami Autoryzuj z aplikacji , aby włączyć identyfikator Entra firmy Microsoft.

  2. Postępuj zgodnie z instrukcjami Get Microsoft Entra token (Pobierz token firmy Microsoft Entra) za pomocą narzędzia Postman.

  3. Użyj tokenu Microsoft Entra do wywołania :generateToken za pomocą narzędzia Postman:

    Uwaga

    Użyj najnowszej wersji narzędzia Postman. Stare wersje narzędzia Postman mają jakiś problem z obsługą dwukropka : w ścieżce.

    1. Dla identyfikatora URI wprowadź .https://{Endpoint}/api/hubs/{hub}/:generateToken?api-version=2024-01-01 Jeśli chcesz wygenerować token dla klientów MQTT, dołącz parametr &clientType=mqtt zapytania do adresu URL.

    2. Na karcie Uwierzytelnianie wybierz pozycję Token elementu nośnego i wklej token Microsoft Entra pobrany w poprzednim kroku

    3. Wybierz pozycję Wyślij i zobaczysz token dostępu klienta w odpowiedzi:

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