Jak vygenerovat adresu URL přístupu klienta pro klienty
Klient, ať už jde o prohlížeč 💻, mobilní aplikaci 📱nebo zařízení 💡IoT, používá adresu URL klientského přístupu k připojení a ověření s vaším prostředkem.
Adresa URL se řídí následujícím vzorem:
- Pro klienty MQTT je to
wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>
. - Pro všechny ostatní klienty je to
wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>
.
Tento článek ukazuje několik způsobů, jak získat adresu URL klientského přístupu.
- Rychlý start potřebujete tak, že ho zkopírujete z webu Azure Portal.
- Pro vývoj vygenerujte hodnotu pomocí sady SDK serveru Web PubSub.
- Pokud používáte Microsoft Entra ID, můžete také vyvolat rozhraní REST API pro generování tokenu klienta.
Kopírování z webu Azure Portal
Na kartě Klíče na webu Azure Portal je k dispozici nástroj Generátor adres URL klienta, který vám rychle vygeneruje adresu URL klientského přístupu, jak je znázorněno v následujícím diagramu. Tady zadané hodnoty se neukládají.
Všimněte si, že pro klienty MQTT byste měli vybrat "MQTT Client" v rozevírací nabídce před textovým polem Adresa URL klientského přístupu.
Generování ze sady SDK služby
Stejnou adresu URL klientského přístupu lze vygenerovat pomocí sady SDK serveru Web PubSub.
Postupujte podle pokynů v části Začínáme se serverovou sadou SDK a vytvořte objekt.
WebPubSubServiceClient
service
Vygenerujte adresu URL klientského přístupu voláním
WebPubSubServiceClient.getClientAccessToken
:Generování přístupového tokenu klienta
// for web pubsub native clients let token = await serviceClient.getClientAccessToken(); // for mqtt clients let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
Konfigurace ID uživatele
let token = await serviceClient.getClientAccessToken({ userId: "user1" });
Konfigurace doby života tokenu
let token = await serviceClient.getClientAccessToken({ expirationTimeInMinutes: 5, });
Konfigurace role, která se může připojit ke skupině
group1
přímo při připojení pomocí této adresy URL klientského přístupulet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.joinLeaveGroup.group1"], });
Konfigurace role, kterou může klient odesílat zprávy do skupiny
group1
přímo při připojení pomocí této adresy URL klientského přístupulet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.sendToGroup.group1"], });
Nakonfigurujte skupinu
group1
, ke které se klient připojí, jakmile se připojí pomocí této adresy URL klientského přístupu.let token = await serviceClient.getClientAccessToken({ groups: ["group1"], });
V reálném kódu obvykle máme stranu serveru, která hostuje logiku vygenerující adresu URL klientského přístupu. Když přijde požadavek klienta, může strana serveru k ověření požadavku klienta použít obecný pracovní postup ověřování/autorizace. Adresu URL klientského přístupu můžou získat zpět pouze platné požadavky klientů.
Generování z rozhraní REST API :generateToken
Můžete také použít Microsoft Entra ID a vygenerovat token vyvoláním rozhraní REST API pro generování tokenu klienta.
Poznámka:
Web PubSub nedoporučuje vytvářet tokeny ID Microsoft Entra pro instanční objekty Microsoft Entra ID ručně. Důvodem je to, že každý token Microsoft Entra ID je krátkodobý, obvykle vyprší do jedné hodiny. Po této době musíte ručně vygenerovat náhradní token Microsoft Entra ID. Místo toho použijte naše sady SDK , které automaticky generují a nahrazují tokeny MICROSOFT Entra ID pro vás.
Pokud chcete povolit MICROSOFT Entra ID, postupujte podle autorizace z aplikace .
Získejte token Microsoft Entra.
K vyvolání
:generateToken
použijte token Microsoft Entra .Shromážděte následující informace:
Název hodnoty Jak získat hodnotu TenantId TenantId je hodnota ID adresáře (tenanta) v podokně Přehled aplikace, kterou jste zaregistrovali. ClientId ClientId je hodnota ID aplikace (klienta) z podokna Přehled aplikace, kterou jste zaregistrovali. ClientSecret ClientSecret je hodnota tajného klíče klienta, který jste právě přidali v kroku 1. Získání tokenu MICROSOFT Entra ID z platformy Microsoft Identity Platform
Pomocí nástroje CURL si ukážeme, jak vyvolat rozhraní REST API. Nástroj je součástí Windows 10/11 a nástroj můžete nainstalovat pomocí nástroje Install 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"
Výše uvedený příkaz curl odešle požadavek POST do koncového bodu identity Microsoftu , aby získal token ID Microsoft Entra zpět. V odpovědi se v
access_token
poli zobrazí token ID Microsoft Entra. Zkopírujte a uložte si ji k pozdějšímu použití.Použití tokenu ID Microsoft Entra k vyvolání
: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"
Pokud potřebujete vygenerovat token pro klienty MQTT, připojte
clientType=mqtt
parametr k adrese 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"
Po spuštění
cURL
příkazu by se měla zobrazit odpověď podobná této:{ "token": "ABCDEFG.ABC.ABC" }