Clienttoegangs-URL genereren voor de clients
Een client, of het nu gaat om een browser 💻, een mobiele app 📱of een IoT-apparaat 💡, gebruikt een URL voor clienttoegang om verbinding te maken en te verifiëren met uw resource.
De URL volgt het onderstaande patroon:
- Voor MQTT-clients is het
wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>
. - Voor alle andere clients is het
wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>
.
In dit artikel vindt u verschillende manieren om de URL voor clienttoegang op te halen.
- Kopieer er een uit de Azure-portal om snel aan de slag te gaan
- Genereer de waarde voor ontwikkeling met behulp van de Web PubSub-server-SDK
- Als u Microsoft Entra-id gebruikt, kunt u ook de REST API voor het genereren van clienttoken aanroepen
Kopiëren vanuit Azure Portal
Op het tabblad Sleutels in Azure Portal is er een hulpprogramma voor client-URL-generator waarmee u snel een clienttoegangs-URL kunt genereren, zoals wordt weergegeven in het volgende diagram. De invoer van waarden wordt hier niet opgeslagen.
Houd er rekening mee dat u voor MQTT-clients 'MQTT-client' moet selecteren in de vervolgkeuzelijst vóór het tekstvak 'URL voor clienttoegang'.
Genereren vanuit service-SDK
Dezelfde URL voor clienttoegang kan worden gegenereerd met behulp van de Web PubSub-server-SDK.
Volg Aan de slag met server-SDK om een
WebPubSubServiceClient
object te makenservice
Genereer clienttoegangs-URL door het volgende aan te roepen
WebPubSubServiceClient.getClientAccessToken
:Clienttoegangstoken genereren
// for web pubsub native clients let token = await serviceClient.getClientAccessToken(); // for mqtt clients let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
Gebruikers-id configureren
let token = await serviceClient.getClientAccessToken({ userId: "user1" });
De levensduur van het token configureren
let token = await serviceClient.getClientAccessToken({ expirationTimeInMinutes: 5, });
Een rol configureren die rechtstreeks lid kan worden van een groep
group1
wanneer deze verbinding maakt met behulp van deze URL voor clienttoeganglet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.joinLeaveGroup.group1"], });
Een rol configureren die de client rechtstreeks naar de groep
group1
kan verzenden wanneer deze verbinding maakt met behulp van deze CLIENT Access-URLlet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.sendToGroup.group1"], });
Een groep
group1
configureren waaraan de client wordt toegevoegd zodra deze verbinding maakt met behulp van deze CLIENT Access-URLlet token = await serviceClient.getClientAccessToken({ groups: ["group1"], });
In echte code hebben we meestal een serverzijde om de logica te hosten die de URL voor clienttoegang genereert. Wanneer een clientaanvraag binnenkomt, kan de serverzijde de algemene verificatie-/autorisatiewerkstroom gebruiken om de clientaanvraag te valideren. Alleen geldige clientaanvragen kunnen de URL voor clienttoegang terughalen.
Genereren vanuit REST API :generateToken
U kunt ook Microsoft Entra-id gebruiken en het token genereren door de REST API voor het genereren van clienttoken aan te roepen.
Notitie
Web PubSub raadt u niet aan om Handmatig Microsoft Entra ID-tokens te maken voor Service-principals voor Microsoft Entra ID. Dit komt doordat elk Microsoft Entra ID-token kort duurt, meestal binnen één uur verloopt. Na deze tijd moet u handmatig een vervangend Microsoft Entra ID-token genereren. Gebruik in plaats daarvan onze SDK's die automatisch verlopen Microsoft Entra ID-tokens voor u genereren en vervangen.
Volg Autoriseren vanuit de toepassing om Microsoft Entra-id in te schakelen.
Haal het Microsoft Entra-token op.
Gebruik het Microsoft Entra-token om aan te roepen
:generateToken
.Verzamel de volgende informatie:
Waardenaam De waarde ophalen TenantId TenantId is de waarde van map-id (tenant) in het deelvenster Overzicht van de toepassing die u hebt geregistreerd. ClientId ClientId is de waarde van de toepassings-id (client) in het deelvenster Overzicht van de toepassing die u hebt geregistreerd. ClientSecret ClientSecret is de waarde van het clientgeheim dat u zojuist hebt toegevoegd in stap 1 Het Microsoft Entra ID-token ophalen van het Microsoft Identity Platform
We gebruiken het CURL-hulpprogramma om te laten zien hoe u de REST API's aanroept. Het hulpprogramma is gebundeld in Windows 10/11 en u kunt het hulpprogramma installeren na Curl installeren.
# 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"
Met de bovenstaande curl-opdracht wordt een POST-aanvraag naar het Microsoft-identiteitseindpunt verzonden om het Microsoft Entra ID-token terug te krijgen. In het antwoord ziet u het Microsoft Entra ID-token in
access_token
het veld. Kopieer en bewaar deze voor later gebruik.Het Microsoft Entra ID-token gebruiken om aan te roepen
: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"
Als u het token voor MQTT-clients wilt genereren, voegt u de
clientType=mqtt
parameter toe aan de 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"
Nadat u de
cURL
opdracht hebt uitgevoerd, krijgt u een antwoord als volgt:{ "token": "ABCDEFG.ABC.ABC" }