Aracılığıyla paylaş


JSON Web Belirteçlerini kullanarak ad alanlarıyla kimlik doğrulaması

Bu makalede, JSON Web Belirteçlerini kullanarak Azure Event Grid ad alanıyla kimlik doğrulamasının nasıl yapılacağını gösterilmektedir.

Azure Event Grid'in MQTT aracısı, istemcilerin Microsoft Entra ID dışında herhangi bir kimlik sağlayıcısı tarafından verilen JSON Web Belirteçlerini kullanarak Event Grid ad alanına bağlanmasını ve kimlik doğrulamasını sağlayan özel JWT kimlik doğrulamasını destekler.

Önkoşullar

Ad alanları için özel JWT kimlik doğrulaması kullanmak için aşağıdaki önkoşullara sahip olmanız gerekir:

  • Json Web Belirteçleri düzenleyebilen kimlik sağlayıcısı.
  • İstemci belirteçlerini doğrulamak için kullanılan ortak anahtarlarınızı içeren CA sertifikası.
  • Ortak anahtarlarınızı içeren CA sertifikasını barındırmak için Azure Key Vault hesabı.

Üst düzey adımlar

Ad alanları için özel JWT 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. Ortak anahtarlarınızı içeren CA sertifikasını barındıran bir Azure Key Vault hesabı oluşturun.
  4. Ad alanının yönetilen kimliği için Azure Key Vault'a rol ataması ekleyin.
  5. Event Grid ad alanınızda özel kimlik doğrulama ayarlarını yapılandırma
  6. İstemcileriniz, kimlik sağlayıcınız tarafından sağlanan belirteçleri kullanarak Event Grid ad alanına bağlanabilir.

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

Hızlı Başlangıç: Azure portalıyla Event Grid Ad Alanı'nda MQTT iletilerini yayımlayıp abone olarak kullanarak bir ad alanı oluşturun ve alt kaynaklarını yapılandırın. İstemci kimlikleri sağlanan belirteçten geldiğinde 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

Ad alanı, özel etki alanınız için sunucu sertifikasını almak üzere Azure Key Vault örneğine erişmek için yönetilen kimliği kullanır. 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.

Azure Key Vault hesabı oluşturma ve sunucu sertifikanızı karşıya yükleme

  1. Azure Key Vault hesabı oluşturmak için aşağıdaki komutu kullanın:

    az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup" 
    
  2. Sertifikayı Azure Key Vault'a aktarmak için aşağıdaki komutu kullanın

    az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> " 
    

    Not

    Sertifikanız, DNS için Konu Alternatifi adına etki alanı adını içermelidir. Daha fazla bilgi için bkz . Öğretici: Azure Key Vault'ta sertifika içeri aktarma.

Ad alanının yönetilen kimliği için Azure Key Vault'ta rol ataması ekleme

Aşağıdaki adımları kullanarak Azure Key Vault hesabınıza erişmek için ad alanına erişim sağlamanız gerekir:

  1. Aşağıdaki komutu kullanarak Event Grid ad alanı sistemi yönetilen kimlik sorumlusu kimliğini alma

    $principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv) 
    
  2. Azure Key Vault kaynak kimliğinizi alın.

    $keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv) 
    
  3. Ad alanının yönetilen kimliği için Key Vault'a rol ataması ekleyin.

    az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId 
    

    Key Vault erişimi ve portal deneyimi hakkında daha fazla bilgi için bkz . Azure rol tabanlı erişim denetimiyle Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlama.

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

Bu adımda, Azure portalını ve Azure CLI'yı kullanarak Event Grid ad alanınızda özel kimlik doğrulama ayarlarını yapılandıracaksınız. Önce ad alanını oluşturmanız ve ardından aşağıdaki adımları kullanarak güncelleştirmeniz gerekir.

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 JWT kimlik doğrulaması bölümünde aşağıdaki özellikler için değerleri belirtin:

    1. Özel JWT kimlik doğrulamasını etkinleştir'i seçin.

    2. Belirteç Veren: MQTT istemcileri tarafından sunulan JWT belirteçlerinin veren taleplerinin değerini girin.

    3. Veren sertifikası ekle'yi seçin

      Event Grid ad alanının Yapılandırma sayfasının Özel JWT kimlik doğrulaması bölümünü gösteren ekran görüntüsü.

    4. Yeni sayfada, aşağıdaki özellikler için değerleri belirtin.

      1. Sertifika URL'si: Oluşturduğunuz Azure Key Vault'ta veren sertifikanın Sertifika Tanımlayıcısı. Aboneliklerinizden sertifikayı ve anahtar kasasını seçmek için bunun yerine Anahtar kasası kullanarak sertifika seçin'i seçebilirsiniz.

      2. Kimlik: Oluşturulan veren sertifikaya erişmek için Key Vault ile kimlik doğrulaması yapmak için kullanılan kimlik.

      3. Ekle'yi seçin.

        Veren sertifikası ekle sayfasını gösteren ekran görüntüsü.

  4. Yapılandırma sayfasına geri dönüp Uygula'yı seçin.

    Not

    Sertifika/anahtar döndürme amacıyla en çok iki iss sertifika ekleyebilirsiniz.

Azure CLI kullanma

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

az resource update --resource-type Microsoft.EventGrid/namespaces --api-version 2024-06-01-preview --ids /subscriptions/69f9e5ac-ca07-42cc-98d2-4718d033bcc5/resourceGroups/dummy-cd-test/providers/Microsoft.EventGrid/namespaces/dummy-cd-test2 --set properties.topicSpacesConfiguration.clientAuthentication='{\"customJwtAuthentication\":{\"tokenIssuer\":\"dmpypin-issuer\",\"issuerCertificates\":[{\"certificateUrl\":\"https://dummyCert-cd-test.vault.azure.net/certificates/dummy-cd-test/4f844b284afd487e9bba0831191087br1\",\"identity\":{\"type\":\"SystemAssigned\"}}]}}' 

JSON Web Belirteci biçimi

Json Web Belirteçleri, JWT Üst Bilgisi ve JWT yükü bölümlerine ayrılır.

JWT Üst Bilgisi

Üst bilgi en az typ ve alg alanları içermelidir. typ her zaman olmalıdır JWS ve alg her zaman olmalıdır RS256. Belirteç üst bilgisi aşağıdaki gibi olmalıdır:

{
    "typ": "JWT",
    "alg": "RS256"
}

JWT yükü

Event Grid şu talepleri gerektirir: iss, sub, aud, exp, . nbf

Veri Akışı Adı Açıklama
iss Veren. JWT'deki değer, özel JWT kimlik doğrulaması için Event Grid ad alanı yapılandırmasındaki verenle eşleşmelidir.
sub Konu. Değer, kimlik doğrulama kimliği adı olarak kullanılır.
aud Seyirci. Değer bir dize veya dize dizisi olabilir. Değer, bu Event Grid ad alanı için standart Event Grid ad alanı konak adı ve/veya özel etki alanı içermelidir (yapılandırıldıysa). İzleyiciler başka dizeler içerebilir, ancak bu dizelerden en az birinin bu ad alanı için standart bir Event Grid ad alanı ana bilgisayar adı veya özel etki alanı olması gerekir.
exp Sona erme. JWT'nin süresi dolduğunda unix zamanı.
nbf Daha önce değil. JWT'nin geçerli olduğu birim süresi.

Event Grid, aşağıdaki türlerden birine sahipse tüm talepleri istemci öznitelikleriyle eşler: int32, , stringarray of strings. Standart talepler iss, sub, aud, exp, istemci nbf özniteliklerinin dışında tutulur. Aşağıdaki JWT örneğinde, yalnızca üç talep , istemci özniteliklerine num_attrstr_attrstr_list_attrdönüştürülür çünkü doğru türleri int32, , . stringarray of stringsincorrect_attr_1, incorrect_attr_2incorrect_attr_3 yanlış türleri olduğundan istemci özniteliklerine dönüştürülemez: float, array of integers, object.

{
    "iss": "correct_issuer",
    "sub": "d1",
    "aud": "testns.mqtt-broker-int.azure.net",
    "exp": 1712876224,
    "nbf": 1712869024,
    "num_attr": 1,
    "str_attr": "some string",
    "str_list_attr": [
        "string 1",
        "string 2"
    ],
    "incorrect_attr_1": 1.23,
    "incorrect_attr_2": [
        1,
        2,
        3
    ],
    "incorrect_attr_3": {
        "field": "value"
    }
}