Aracılığıyla paylaş


İstemciler için istemci erişim URL'si oluşturma

Tarayıcı, mobil uygulama 📱veya IoT cihazı 💡gibi 💻bir istemci, kaynağınıza bağlanmak ve kaynağınızla kimlik doğrulaması yapmak için İstemci Erişim URL'si kullanır.

URL aşağıdaki desene uyar:

  • MQTT istemcileri için , şeklindedir wss://<service_name>.webpubsub.azure.com/clients/mqtt/hubs/<hub_name>?access_token=<token>.
  • Diğer tüm istemciler için.wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>

Bu makalede, İstemci Erişimi URL'sini almanın çeşitli yolları gösterilmektedir.

  • Hızlı başlangıç için Azure portalından bir tane kopyalayın
  • Geliştirme için Web PubSub sunucu SDK'sını kullanarak değeri oluşturun
  • Microsoft Entra Id kullanıyorsanız İstemci Belirteci Oluşturma REST API'sini de çağırabilirsiniz

Azure portalından kopyalama

Azure portalındaki Anahtarlar sekmesinde, aşağıdaki diyagramda gösterildiği gibi sizin için hızlı bir şekilde bir İstemci Erişim URL'si oluşturmaya yönelik bir İstemci URL Oluşturucu aracı vardır. Buradaki değerler girişi depolanmaz.

MQTT istemcileri için, "İstemci Erişimi URL'si" metin kutusunun önündeki açılan menüde "MQTT İstemcisi" seçeneğini belirlemeniz gerektiğini unutmayın.

Web PubSub İstemci URL Oluşturucusunun ekran görüntüsü.

Hizmet SDK'sından oluşturma

Web PubSub sunucu SDK'sı kullanılarak aynı İstemci Erişimi URL'si oluşturulabilir.

  1. Nesne oluşturmak WebPubSubServiceClient için Sunucu SDK'sını kullanmaya başlama'yı izleyin service

  2. çağrısı WebPubSubServiceClient.getClientAccessTokenyaparak İstemci Erişimi URL'si oluşturma:

    • İstemci erişim belirteci oluşturma

      // for web pubsub native clients
      let token = await serviceClient.getClientAccessToken();
      
      // for mqtt clients
      let token = await serviceClient.getClientAccessToken({ clientProtocol: "mqtt" });
      
    • Kullanıcı kimliğini yapılandırma

      let token = await serviceClient.getClientAccessToken({ userId: "user1" });
      
    • Belirtecin ömrünü yapılandırma

      let token = await serviceClient.getClientAccessToken({
        expirationTimeInMinutes: 5,
      });
      
    • Bu İstemci Erişimi URL'sini kullanarak bağlandığında gruba group1 doğrudan katılabilecek bir rol yapılandırın

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.joinLeaveGroup.group1"],
      });
      
    • İstemcinin bu İstemci Erişimi URL'sini kullanarak bağlandığında doğrudan gruba group1 ileti gönderebileceği bir rol yapılandırın

      let token = await serviceClient.getClientAccessToken({
        roles: ["webpubsub.sendToGroup.group1"],
      });
      
    • Bu İstemci Erişimi URL'sini kullanarak istemcinin bağlandıktan sonra katılabilmesi için bir grup group1 yapılandırma

      let token = await serviceClient.getClientAccessToken({
        groups: ["group1"],
      });
      

Gerçek dünya kodunda genellikle İstemci Erişimi URL'sini oluşturan mantığı barındırmak için bir sunucu tarafımız vardır. bir istemci isteği geldiğinde, sunucu tarafı istemci isteğini doğrulamak için genel kimlik doğrulama/yetkilendirme iş akışını kullanabilir. İstemci Erişimi URL'sini yalnızca geçerli istemci istekleri geri alabilir.

REST API'den oluşturma :generateToken

Ayrıca Microsoft Entra Id kullanabilir ve İstemci Belirteci Oluştur REST API'sini çağırarak belirteci oluşturabilirsiniz.

Not

Web PubSub, Microsoft Entra ID hizmet sorumluları için Microsoft Entra ID belirteçlerini el ile oluşturmanızı önermez. Bunun nedeni, her Microsoft Entra Id belirtecinin kısa süreli olması ve genellikle bir saat içinde süresinin dolmasıdır. Bu süreden sonra, el ile yeni bir Microsoft Entra Id belirteci oluşturmanız gerekir. Bunun yerine, süresi dolan Microsoft Entra ID belirteçlerini sizin için otomatik olarak oluşturan ve değiştiren SDK'larımızı kullanın.

  1. Microsoft Entra Id'yi etkinleştirmek için Uygulamadan yetki ver'i izleyin.

  2. Microsoft Entra belirtecini alın.

  3. Çağırmak :generateTokeniçin Microsoft Entra belirtecini kullanın.

  4. Aşağıdaki bilgileri toplayın:

    Değer adı Değeri alma
    TenantId TenantId, kaydettiğiniz uygulamanın Genel Bakış bölmesindeki Dizin (kiracı) Kimliği değeridir.
    ClientId ClientId, kaydettiğiniz uygulamanın Genel Bakış bölmesindeki Uygulama (istemci) Kimliği değeridir.
    ClientSecret ClientSecret, 1. adımda yeni eklediğiniz istemci gizli dizisinin değeridir
  5. Microsoft kimlik platformu'dan Microsoft Entra Id belirtecini alma

    REST API'lerini çağırmayı göstermek için CURL aracını kullanırız. Araç Windows 10/11'de paketlenmiştir ve CURL'yi Yükle'yi izleyerek aracı yükleyebilirsiniz.

    # 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"
    
    

    Yukarıdaki curl komutu, Microsoft Entra Id belirtecini geri almak için Microsoft kimlik uç noktasına bir POST isteği gönderir. Yanıtta, alanda Microsoft Entra Id belirtecini access_token görürsünüz. Daha sonra kullanmak üzere bunu kopyalayın ve depolayın.

  6. Çağırmak için Microsoft Entra Id belirtecini kullanma :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"
    

    MQTT istemcileri için belirteci oluşturmanız gerekiyorsa parametresini clientType=mqtt URL'ye ekleyin:

    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"
    

    Komutu çalıştırdıktan cURL sonra aşağıdakine benzer bir yanıt almanız gerekir:

    {
      "token": "ABCDEFG.ABC.ABC"
    }