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".
Generera från tjänst-SDK
Samma URL för klientåtkomst kan genereras med hjälp av Web PubSub Server SDK.
Följ Komma igång med server-SDK för att skapa ett
WebPubSubServiceClient
objektservice
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åtkomstlet 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åtkomstlet 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åtkomstlet 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.
Följ Auktorisera från programmet för att aktivera Microsoft Entra-ID.
Hämta Microsoft Entra-token.
Använd Microsoft Entra-token för att anropa
:generateToken
.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 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.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" }