Jak wygenerować adres URL dostępu klienta dla klientów
Artykuł
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. Ten adres URL jest zgodny ze wzorcem .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
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.
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.
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"],
});
Postępuj zgodnie z instrukcjami Wprowadzenie do zestawu SDK serwera, aby utworzyć WebPubSubServiceClient obiekt service
var url = service.GetClientAccessUri(userId: "user1");
Konfigurowanie okresu istnienia tokenu
var url = service.GetClientAccessUri(expiresAfter: TimeSpan.FromMinutes(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
var url = service.GetClientAccessUri(roles: new string[] { "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
var url = service.GetClientAccessUri(roles: new string[] { "webpubsub.sendToGroup.group1" });
Konfigurowanie grupy group1 przyłączonej przez klienta po nawiązaniu połączenia przy użyciu tego adresu URL dostępu klienta
var url = service.GetClientAccessUri(groups: new string[] { "group1" });
Postępuj zgodnie z instrukcjami Wprowadzenie do zestawu SDK serwera, aby utworzyć WebPubSubServiceClient obiekt service
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
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.setUserId(id);
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
Konfigurowanie okresu istnienia tokenu
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.setExpiresAfter(Duration.ofDays(1));
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
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
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.addRole("webpubsub.joinLeaveGroup.group1");
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
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
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.addRole("webpubsub.sendToGroup.group1");
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
Konfigurowanie grupy group1 przyłączonej przez klienta po nawiązaniu połączenia przy użyciu tego adresu URL dostępu klienta
GetClientAccessTokenOptions option = new GetClientAccessTokenOptions();
option.setGroups(Arrays.asList("group1")),
WebPubSubClientAccessToken token = service.getClientAccessToken(option);
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 generowania 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.
Postępuj zgodnie z instrukcjami Autoryzuj z aplikacji , aby włączyć identyfikator Entra firmy Microsoft.