Aracılığıyla paylaş


Ad alanlarıyla kimlik doğrulaması yapmak için OAuth 2.0 JSON Web Belirteçlerini (JWT) kullanma

Bu makalede, OAuth 2.0 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 OAuth 2.0 JWT kimlik doğrulamasını destekler.

Önkoşullar

Ad alanları için OAuth 2.0 JWT kimlik doğrulamasını 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ı (Key Vault) veya doğrudan karşıya yükleme için ortak anahtar sertifikalarınızın PEM dosyası.

Üst düzey adımlar

Ad alanları için OAuth 2.0 JWT kimlik doğrulamasını 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. Şu adımları izleyerek Event Grid ad alanınızda OAuth 2.0 kimlik doğrulama ayarlarını yapılandırın:

    1. Ortak anahtarlarınızı içeren CA sertifikasını barındıran bir Azure Key Vault hesabı oluşturun ve ad alanının yönetilen kimliği için Key Vault'a rol ataması ekleyin.
    2. Veya ortak anahtar sertifikalarınızın PEM dosyasını ad alanına yükleyin.
  4. İ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’da Event Grid Ad Alanı’nda MQTT iletilerini yayımlama ve abone olma talimatlarını izleyerek bir ad alanı oluşturun ve alt kaynaklarını yapılandırın. İstemci kimlikleri sağlanan belirteçten geldiği için 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ı 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.

Event Grid ad alanı -Key Vault'unuzda OAuth 2.0 JWT kimlik doğrulama ayarlarını yapılandırma

İlk olarak bir Azure Key Vault hesabı oluşturun, sunucu sertifikanızı yükleyin ve anahtar kasasında ad alanının yönetilen kimliği için uygun bir rol atayın. Ardından, Azure portalını veya Azure CLI'yı kullanarak Event Grid ad alanınızda özel kimlik doğrulama ayarlarını yapılandırabilirsiniz. Önce ad alanını oluşturmanız ve ardından aşağıdaki adımları kullanarak güncelleştirmeniz gerekir.

Azure Key Vault hesabı oluşturun ve sunucu sertifikanızı yükleyin.

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

    Uyarı

    Sertifikanız, DNS için Konu Alternatif Adı'nda domain adını içermelidir. Daha fazla bilgi için bkz: Öğretici: Azure Key Vault'ta Sertifika İç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ı sistem tarafından yönetilen kimlik ana kimliğini edinin.

    $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 Azure rol tabanlı erişim denetimiyle Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlama başlıklı makaleye bakın.

Kimlik doğrulamasını yapılandırmak için Azure portalını 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’lerin verici beyanlarının değerini giriniz.

    3. Yayımlayan sertifikası için Azure Key Vault'tan seçin.

      Event Grid ad alanının Yapılandırma sayfasının Azure Key Vault seçeneğini 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ı. Bunun yerine aboneliklerinizden sertifikayı ve anahtar kasasını seçmek için 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.

    Uyarı

    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/1111a1a1-bb2b-cc3c-dd4d-ffffee5e5e5e/resourceGroups/sample-rg/providers/Microsoft.EventGrid/namespaces/sample-namespace \
  --set properties.topicSpacesConfiguration.clientAuthentication='{
    \"customJwtAuthentication\":{
      \"tokenIssuer\":\"sample-issuer\",
      \"issuerCertificates\":[
        {
          \"certificateUrl\":\"https://sample-vault.vault.azure.net/certificates/sample-cert/12345abcdef67890\",
          \"identity\":{
            \"type\":\"UserAssigned\",
            \"userAssignedIdentity\":\"/subscriptions/1111a1a1-bb2b-cc3c-dd4d-ffffee5e5e5e/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity\"
          }
        }
      ]
    }
  }'
 

JSON Web Belirteci biçimi

JSON Web Belirteçlerinin JWT Üst Bilgisi, JWT yükü ve JWT imza bölümlerine sahip olması gerekir.

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

İsim Açıklama
iss İhraççı. 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 adı olarak kullanılır.
aud Seyirci. Değer bir dize dizisidir. Değer, Event Grid ad alanı için standart ana bilgisayar adı ve/veya özel etki alanını içermelidir (yapılandırıldıysa). Kitle başka metinler içerebilir, ancak bu metinlerden en az birinin bu ad alanı için standart bir Event Grid ana bilgisayar adı veya özel bir etki alanı olması gerekir.
exp Süre sonu 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"
    }
}

Event Grid ad alanınızda OAuth 2.0 JWT kimlik doğrulama ayarlarını yapılandırma - Doğrudan karşıya yükleme

Bu adımda, Azure portalını ve Azure CLI'yı kullanarak Event Grid ad alanınızda özel JWT 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’lerin verici beyanlarının değerini giriniz.

    3. İhraç eden sertifika seçeneğini - Doğrudan Yükleme seçin.

      Event Grid ad alanının Yapılandırma sayfasının Doğrudan Karşıya Yükleme seçeneğinin seçimini gösteren ekran görüntüsü.

  4. Yeni sayfada, aşağıdaki özellikler için değerleri belirtin.
    1. Sertifika: Sunucu sertifikanızı PEM Biçiminde karşıya yükleyin.

    2. Kid: Sertifika için benzersiz anahtar tanımlayıcısı.

    3. Ekle'yi seçin.

      Karşıya yükle veren sertifikası sayfasını gösteren ekran görüntüsü.

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

Azure CLI kullanma

Ad alanınızı OAuth 2.0 JWT kimlik doğrulama 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 2024-12-15-preview \ 
    --set customJwtAuthenticationSettings='{ 
        "tokenIssuer": "issuer-name", 
        "encodedIssuerCertificates": [
            { 
                "kid": "key1", 
                "encodedCertificate": "-----BEGIN CERTIFICATE-----\n<certificate-in-PEM-format>\n-----END CERTIFICATE-----" 
            } 
        ] 
    } 
  • <resource-group-name>, <namespace-name>, <location>, <key-vault-name>, <certificate-name> ve <certificate-in-PEM-format> ile gerçek değerlerinizi değiştirin.
  • encodedCertificate değeri, üst bilgiler ( "-----BEGIN CERTIFICATE-----", "-----END CERTIFICATE----, ``-----BEGIN PUBLIC KEY----- and -----END PUBLIC KEY-----) dahil olmak üzere PEM biçiminde tam sertifikayı ve ortak anahtarı içermelidir.
  • Sağlanan ortak anahtar sertifikasının kimlik sağlayıcınız tarafından geçerli ve güvenilir olduğundan emin olun.
  • Sertifikaların döndürülmüş veya süresi dolmuşsa kodlanmışIssuerCertificates'i düzenli olarak güncelleştirin.

JSON Web Belirteci biçimi

JSON Web Belirteçlerinin JWT Üst Bilgisi, JWT yükü ve JWT imza bölümlerine sahip olması gerekir.

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

  • kid isteğe bağlıdır. Varsa, doğrulama için eşleşen kid sertifika kullanılır.
  • Öznitelik olarak kullanılmayan standart taleplerin listesi: iss, sub, aud, exp, nbf, iat, jti.
  • Doğru veri türüne (int32, dize, dize dizisine uyan sayı) sahip tüm talepler öznitelik olarak kullanılır. örneğindenum_attr_pos, num_attr_neg, str_attrstr_list_attr talepleri doğru veri türlerine sahiptir ve öznitelik olarak kullanılır.
  • örneğinde bool_attr, num_attr_to_big, num_attr_floatobj_attr talepleri yanlış veri türlerine sahiptir ve öznitelik olarak kullanılmaz.
{ 
  "typ": "JWT", 
  "alg": "RS256", 
  "kid": "keyId1" 
}.{ 
  "iss": "some-issuer", 
  "sub": "device1", 
  "aud": "event-grid-namespace.ts.eventgrid.azure.net", 
  "exp": 1770426501, 
  "nbf": 1738886901, 
  "bool_attr": true, 
  "num_attr_pos": 1, 
  "num_attr_neg": -1, 
  "num_attr_to_big": 9223372036854775807, 
  "num_attr_float": 1.23, 
  "str_attr": "str_value", 
  "str_list_attr": [ 
    "str_value_1", 
    "str_value_2" 
  ], 
  "obj_attr": { 
      "key": "value" 
  } 
}