Aracılığıyla paylaş


Özel web kancası kimlik doğrulamasını kullanarak MQTT aracısı ile kimlik doğrulaması

Bu makalede, web kancası veya Azure işlevi kullanarak Azure Event Grid ad alanlarıyla kimlik doğrulaması yapmayı öğreneceksiniz.

Web kancası kimlik doğrulaması, dış HTTP uç noktalarının (web kancaları veya işlevler) Message Queuing Telemetri Aktarımı (MQTT) bağlantılarının dinamik olarak kimliğini doğrulamasını sağlar. Bu yöntem, güvenli erişim sağlamak için Microsoft Entra ID JSON Web Belirteci doğrulamasını kullanır.

İstemci bağlanmaya çalıştığında, aracı Paylaşılan Erişim İmzası belirteçleri, kullanıcı adları ve parolalar gibi kimlik bilgilerini doğrulayan, hatta Sertifika İptal Listesi denetimleri gerçekleştiren kullanıcı tanımlı bir HTTP uç noktasını çağırır. Web kancası isteği değerlendirir ve ayrıntılı yetkilendirme için isteğe bağlı meta verilerin yanı sıra bağlantıya izin verme veya bağlantıyı reddetme kararı döndürür. Bu yaklaşım, farklı cihaz filoları ve kullanım örnekleri arasında esnek ve merkezi kimlik doğrulama ilkelerini destekler.

Önkoşullar

  • Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliğe sahip bir Event Grid ad alanı.
  • Dış web kancası veya Azure işlevi.
  • Event Grid ad alanının yönetilen kimliğine Azure işlevine veya web kancasına erişim izni verilir.

Üst düzey adımlar

Ad alanları için özel web kancası kimlik doğrulaması kullanmak için şu adımları izleyin:

  1. Bir ad alanı oluşturun ve alt kaynaklarını yapılandırın.
  2. Event Grid ad alanınızda yönetilen kimliği etkinleştirin.
  3. Yönetilen kimliğe Azure işlevinize veya web kancanıza erişim verin.
  4. Event Grid ad alanınızda özel web kancası ayarlarını yapılandırın.
  5. İstemcilerinizi Event Grid ad alanına bağlayın ve web kancası veya işlevi aracılığıyla kimlik doğrulamasından geçin.

Ad alanı oluşturma ve alt kaynaklarını yapılandırma

Ad alanı oluşturmak ve alt kaynaklarını yapılandırmak için Hızlı Başlangıç: Azure portalıyla Event Grid ad alanında MQTT iletilerini yayımlama ve abone olma başlığı altındaki yönergeleri izleyin. İstemci kimlikleri sağlanan belirteçten geldiğinden sertifika ve istemci oluşturma adımlarını atlayın. İstemci öznitelikleri, istemci belirtecindeki özel talepleri temel alır. İstemci öznitelikleri istemci grubu sorgusunda, konu şablonu değişkenlerinde ve yönlendirme zenginleştirme yapılandırmasında kullanılır.

Event Grid ad alanınızda yönetilen kimliği etkinleştirme

Event Grid ad alanınızda sistem tarafından atanan yönetilen kimliği etkinleştirmek için aşağıdaki komutu kullanın:

az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}" 

Azure portalını kullanarak sistem ve kullanıcı tarafından atanan kimlikleri yapılandırma hakkında bilgi için bkz. Event Grid ad alanı için yönetilen kimliği etkinleştirme.

Yönetilen kimliğe bir işleve veya web kancasına uygun erişim verme

Event Grid ad alanınızın yönetilen kimliğine hedef Azure işlevine veya web kancasına uygun erişimi verin.

Azure işlevi için özel kimlik doğrulaması ayarlamak için sonraki adımları izleyin.

Microsoft Entra uygulaması oluşturma

  1. Microsoft Entra Id'de bir Microsoft Entra uygulaması oluşturun.

  2. Uygulamanın Genel Bakış sayfasında Uygulama (istemci) Kimliği değerini not edin.

    Uygulama (istemci) kimliği vurgulanmış bir Microsoft Entra ID uygulamasının Genel Bakış sayfasını gösteren ekran görüntüsü.

  3. Soldaki menüden API'yi kullanıma sunma'yı seçin. Uygulama Kimliği URI'si'nin yanında Ekle'yi seçin.

  4. Uygulama kimliği URI'sini düzenle bölmesinde Uygulama Kimliği URI değerini not edin ve kaydet'i seçin.

    Microsoft Entra uygulamasının uygulama kimliği URI'sini gösteren ekran görüntüsü.

Azure işlevi için kimlik doğrulamasını ayarlama

Azure portalından oluşturulmuş temel bir Azure işlevine sahipseniz, kimlik doğrulamasını ayarlayın ve yönetilen kimlik kullanılarak oluşturulan Microsoft Entra Id belirtecini doğrulayın.

  1. Azure İşlevleri uygulamanıza gidin.

  2. Sol menüde Kimlik Doğrulaması'nı ve ardından Kimlik sağlayıcısı ekle'yi seçin.

    Kimlik Doğrulama sayfasını gösteren ekran görüntüsü.

  3. Kimlik sağlayıcısı ekle sayfasında, Kimlik Sağlayıcısı için açılan listeden Microsoft'u seçin.

  4. Uygulama kaydı bölümünde, aşağıdaki özellikler için değerleri belirtin:

    1. Uygulama (istemci) Kimliği: Daha önce not ettiğiniz Microsoft Entra uygulamasının istemci kimliğini girin.

    2. Veren URL'si: Veren URL'sini biçiminde https://login.microsoftonline.com/<tenantid>/v2.0ekleyin.

      Kimlik sağlayıcısı olarak Microsoft ile kimlik sağlayıcısı ekleme işlemini gösteren ekran görüntüsü.

  5. İzin verilen belirteç hedef kitleleri için, daha önce not ettiğiniz Microsoft Entra uygulamasının Uygulama Kimliği URI değerini ekleyin.

  6. Ek denetimler bölümünde, İstemci uygulaması geliştirme için Belirli istemci uygulamalarından gelen isteklere izin ver'i seçin.

  7. İzin verilen istemci uygulamaları bölmesinde, belirteci oluşturmak için kullanılan sistem tarafından atanan yönetilen kimliğin istemci kimliğini girin. Bu kimliği Microsoft Entra Id kaynağının kurumsal uygulamasında bulabilirsiniz.

  8. Özel gereksinimlerinize göre diğer ayarları seçin ve ardından Ekle'yi seçin.

Şimdi Microsoft Entra ID belirtecini oluşturun ve kullanın.

  1. Kaynak olarak uygulama kimliği URI'si ile yönetilen kimliği kullanarak bir Microsoft Entra Id belirteci oluşturun.
  2. Azure işlevini istek üst bilgisine ekleyerek çağırmak için bu belirteci kullanın.

Event Grid ad alanınızda özel web kancası kimlik doğrulama ayarlarını yapılandırma

Azure portalını ve Azure CLI'yi kullanarak Event Grid ad alanınızda özel web kancası kimlik doğrulaması ayarlarını yapılandırın. Önce ad alanını oluşturur ve sonra güncelleştirirsiniz.

Azure portal’ı kullanma

  1. Azure portalında Event Grid ad alanınıza gidin.

  2. Event Grid Ad Alanı sayfasında, soldaki menüden Yapılandırma'yı seçin.

  3. Özel Web Kancası kimlik doğrulaması bölümünde aşağıdaki özellikler için değerleri belirtin:

    1. Yönetilen kimlik türü: Kullanıcı tarafından atanan'ı seçin.
    2. Web kancası URL'si: Event Grid hizmetinin belirtilen yönetilen kimliği kullanarak kimliği doğrulanmış web kancası isteklerini gönderdiği URL uç noktasının değerini girin.
    3. Belirteç izleyicisi URI'si: Erişim belirtecinin teslim isteklerine taşıyıcı belirteç olarak eklenmesini sağlamak için Microsoft Entra uygulama kimliğinin veya URI'sinin değerini girin.
    4. Microsoft Entra Id kiracı kimliği: Kimliği doğrulanmış web kancası teslimi için taşıyıcı belirteci almak için kullanılan Microsoft Entra kiracı kimliğinin değerini girin.
  4. seçin, sonra daUygula'yı seçin.

    Event Grid ad alanı için web kancası kimlik doğrulaması yapılandırmasını gösteren ekran görüntüsü.

Azure CLI'yi kullanma

Ad alanınızı özel web kancası kimlik doğrulaması yapılandırmasıyla güncelleştirmek için aşağıdaki komutu kullanın:

az eventgrid namespace update \ 
    --resource-group <resource-group-name> \ 
    --name <namespace-name> \ 
    --api-version 2025-04-01-preview \ 
    --identity-type UserAssigned \ 
    --identity-user-assigned-identities "/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX={}" \ 
    --set properties.isZoneRedundant=true \ 
        properties.topicSpacesConfiguration.state=Enabled \ 
        properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.type=UserAssigned \ 
        properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.userAssignedIdentity="/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX" \ 
        properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.endpointUrl="https://XXXXXXXXXXX" \ 
        properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryApplicationIdOrUri="api://XXXXXXXXXXX/.default" \ 
        properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryTenantId="XXXXXXXXXXX" 

ve <NAMESPACE_NAME> değerlerini gerçek değerlerinizle değiştirin<RESOURCE_GROUP_NAME>. Abonelik, kaynak grubu, kimlik, uygulama kimliği, URL ve kiracı kimliğindeki yer tutucuları doldurun. Event Grid MQTT aracısı için web kancası tabanlı kimlik doğrulamasının performansını ve güvenilirliğini artırmak için web kancası uç noktanız için HTTP/2 desteğini etkinleştirmenizi kesinlikle öneririz.

Webhook API ayrıntıları

İstek başlıkları

Yetkilendirme: Taşıyıcı belirteci

Belirteç, web kancasını çağırmak üzere yapılandırılmış yönetilen kimlik için bir Microsoft Entra belirtecidir.

İstek veri yükü

{
    "clientId": "<string>",
    "userName": "<string>",
    "password": "<base64 encoded bytes>",
    "authenticationMethod": "<string>",
    "authenticationData": "<base64 encoded bytes>",
    "clientCertificate": "<certificate in PEM format>",
    "clientCertificateChain": "<certificates from chain in PEM format>"
}

Payload alanı açıklamaları

Alan Gerekli/İsteğe Bağlı Açıklama
clientId Gerekli MQTT CONNECT paketinden istemci kimliği.
userName Opsiyonel MQTT CONNECT paketinden kullanıcı adı.
password Opsiyonel Base64 kodlamasında MQTT CONNECT paketinden parola.
authenticationMethod Opsiyonel MQTT CONNECT paketinden kimlik doğrulama yöntemi (yalnızca MQTT5).
authenticationData Opsiyonel Base64 kodlamasında MQTT CONNECT paketinden kimlik doğrulama verileri (yalnızca MQTT5).
clientCertificate Opsiyonel PEM biçiminde istemci sertifikası.
clientCertificateChain Opsiyonel İstemci tarafından sağlanan diğer sertifikalar, istemci sertifikasından Sertifika Yetkilisi sertifikasına zinciri oluşturmak için gereklidir.
userProperties Opsiyonel CONNECT paketinden kullanıcı özellikleri (yalnızca MQTT5).

Yanıt yükü

Başarılı yanıt

HTTP/1.1 200 OK 
Content-Type: application/json 

{ 
    "decision": "allow", 
    "clientAuthenticationName": "<string>", 
    "attributes": { 
        "attr": "<int/string/array_of_strings>", 
        ... 
    }, 
    "expiration": "<unix time format>" 
} 

Yanıt reddedildi

HTTP/1.1 400 Bad Request 
Content-Type: application/json 

{ 
    "decision": "deny", 
    "errorReason": "<string>" 
}

Yanıt alanı açıklamaları

Alan Açıklama
decision (gerekli) Kimlik doğrulama kararı veya allowdenyşeklindedir.
clientAuthenticationName İstemci kimlik doğrulama ismi (kimlik ismi). (olarak ayarlandığında decisiongereklidirallow.)
attributes Öznitelikleri olan sözlük. Anahtar, öznitelik adıdır ve değer bir int/string/array değeridir. (İsteğe bağlı olarak decision ayarlandığında allow.)
expiration Unix saat biçiminde son kullanma tarihi. (İsteğe bağlı olarak decision ayarlandığında allow.)
errorReason olarak ayarlandıysa decisiondenyhata iletisi. Bu hata günlüğe kaydedilir. (İsteğe bağlı olarak decision ayarlandığında deny.)

Desteklenen öznitelik türleri örnekleri

"num_attr_pos": 1, 
"num_attr_neg": -1, 
"str_attr": "str_value", 
"str_list_attr": [ 
    "str_value_1", 
    "str_value_2" 
] 

Tüm doğru veri türleri (uygun <int32/string/array_of_strings>sayı) öznitelik olarak kullanılır. Örnekte, num_attr_pos, num_attr_neg, str_attrve str_list_attr talepleri doğru veri türlerine sahiptir ve öznitelik olarak kullanılır.