Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Client, sei es ein Browser 💻, eine mobile App 📱 oder ein IoT-Gerät 💡, verwendet eine Clientzugriffs-URL, um eine Verbindung mit Ihrer Ressource herzustellen und sich zu authentifizieren.
Die URL hat das folgende Muster:
- Für MQTT-Clients:
wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token> - Für alle anderen Clients:
wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>
In diesem Artikel werden verschiedene Möglichkeiten zum Abrufen der Clientzugriffs-URL beschrieben.
- Kopieren Sie eine aus dem Azure-Portal, um schnell loszulegen.
- Generieren Sie für die Entwicklung den Wert mithilfe des Web PubSub Server SDK.
- Wenn Sie Microsoft Entra-ID verwenden, können Sie auch die REST-API zum Generieren von Clienttoken aufrufen.
Kopieren aus dem Azure-Portal
Auf der Registerkarte „Schlüssel“ im Azure-Portal gibt es ein Client-URL-Generatortool, das schnell eine Clientzugriffs-URL für Sie generiert, wie in der folgenden Abbildung gezeigt. Die hier eingegebenen Werte werden nicht gespeichert.
Beachten Sie, dass Sie für MQTT-Clients im Dropdownmenü vor dem Textfeld „Clientzugriffs-URL“ die Option „MQTT-Client“ auswählen sollten.
Generieren über das Dienst-SDK
Die gleiche Clientzugriffs-URL kann mithilfe des Web PubSub Server SDK generiert werden.
Befolgen Sie die ersten Schritte mit dem Server SDK, um das
WebPubSubServiceClient-Objektservicezu erstellen.Generieren Sie die Clientzugriffs-URL durch Aufrufen von
WebPubSubServiceClient.getClientAccessToken:Generieren eines Clientzugriffstokens
// for web pubsub native clients let token = await serviceClient.getClientAccessToken(); // for mqtt clients let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });Konfigurieren der Benutzer-ID
let token = await serviceClient.getClientAccessToken({ userId: "user1" });Konfigurieren der Lebensdauer des Tokens
let token = await serviceClient.getClientAccessToken({ expirationTimeInMinutes: 5, });Konfigurieren einer Rolle, die der Gruppe
group1direkt beitreten kann, wenn sie eine Verbindung mithilfe dieser Clientzugriffs-URL herstelltlet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.joinLeaveGroup.group1"], });Konfigurieren einer Rolle, mit der der Client Nachrichten direkt an die Gruppe
group1senden kann, wenn er eine Verbindung mithilfe dieser Clientzugriffs-URL herstelltlet token = await serviceClient.getClientAccessToken({ roles: ["webpubsub.sendToGroup.group1"], });Konfigurieren der Gruppe
group1, der der Client beitritt, wenn er eine Verbindung mithilfe dieser Clientzugriffs-URL herstelltlet token = await serviceClient.getClientAccessToken({ groups: ["group1"], });
Im realen Code verfügen wir in der Regel über einen Server zum Hosten der Logik, die die Clientzugriffs-URL generiert. Wenn eine Clientanforderung eingeht, kann der Server den allgemeinen Authentifizierungs-/Autorisierungsworkflow verwenden, um die Clientanforderung zu überprüfen. Nur gültige Clientanforderungen können die Clientzugriffs-URL wieder abrufen.
Generieren aus der REST-API :generateToken
Sie können auch Microsoft Entra ID verwenden und das Token generieren, indem Sie Clienttoken-REST-API generieren aufrufen.
Hinweis
Web PubSub empfiehlt nicht, Microsoft Entra ID-Token für Microsoft Entra ID-Dienstprinzipale manuell zu erstellen. Der Grund dafür ist, dass jedes Microsoft Entra ID-Token kurzlebig ist und normalerweise innerhalb einer Stunde abläuft. Nach diesem Zeitpunkt müssen Sie manuell ein Microsoft Entra ID-Ersatztoken generieren. Verwenden Sie stattdessen unsere SDKs, die abgelaufene Microsoft Entra ID-Token automatisch für Sie generieren und ersetzen.
Führen Sie die Schritte zum Autorisieren über die Anwendung aus, um Microsoft Entra ID zu aktivieren.
Rufen Sie das Microsoft Entra-Token ab.
Verwenden Sie das Microsoft Entra-Token zum Aufrufen von
:generateToken.Sammeln Sie die folgenden Informationen:
Name des Werts So erhalten Sie den Wert TenantId TenantId ist der Wert der Verzeichnis-ID (Mandanten-ID) im Bereich Übersicht der von Ihnen registrierten Anwendung. ClientId Client_id ist der Wert der Anwendungs-ID (Client-ID) aus dem Bereich Übersicht der von Ihnen registrierten Anwendung. Geheimer Clientschlüssel ClientSecret ist der Wert des geheimen Clientschlüssels, den Sie soeben in Schritt 1 hinzugefügt haben. Abrufen des Microsoft Entra ID-Tokens von der Microsoft Identity Platform
Wir verwenden das CURL-Tool, um zu zeigen, wie die REST-APIs aufgerufen werden. Das Tool ist in Windows 10/11 gebündelt. Folgen Sie zum Installieren den Anweisungen unter Installieren von 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"Der obige curl-Befehl sendet eine POST-Anforderung an den Microsoft Identity-Endpunkt, um das Microsoft Entra ID-Token zurückzuerhalten. In der Antwort wird das Microsoft Entra ID-Token im Feld
access_tokenangezeigt. Kopieren und speichern Sie die URL zur späteren Verwendung.Verwenden des Microsoft Entra ID-Tokens zum Aufrufen von
: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"Wenn Sie Token für MQTT-Clients generieren möchten, fügen Sie den Abfrageparameter
clientType=mqttan die URL an: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"Nachdem Sie den Befehl
cURLausgeführt haben, sollten Sie eine Antwort ähnlich der folgenden erhalten:{ "token": "ABCDEFG.ABC.ABC" }