Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
Bir ad alanı oluşturun ve alt kaynaklarını yapılandırın.
Event Grid ad alanınızda yönetilen kimliği etkinleştirin.
Şu adımları izleyerek Event Grid ad alanınızda OAuth 2.0 kimlik doğrulama ayarlarını yapılandırın:
- 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.
- Veya ortak anahtar sertifikalarınızın PEM dosyasını ad alanına yükleyin.
İ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.
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"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:
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)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)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 $keyVaultResourceIdKey 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
Event Grid Ad Alanı sayfasında, soldaki menüden Yapılandırma'yı seçin.
Özel JWT kimlik doğrulaması bölümünde aşağıdaki özellikler için değerleri belirtin:
Özel JWT kimlik doğrulamasını etkinleştir'i seçin.
Belirteç Veren: MQTT istemcileri tarafından sunulan JWT’lerin verici beyanlarının değerini giriniz.
Yayımlayan sertifikası için Azure Key Vault'tan seçin.
Yeni sayfada, aşağıdaki özellikler için değerleri belirtin.
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.
Kimlik: Oluşturulan veren sertifikaya erişmek için Key Vault ile kimlik doğrulaması yapmak için kullanılan kimlik.
Ekle'yi seçin.
Yapılandırma sayfasına geri dönüp Uygula'yı seçin.
Uyarı
Sertifika/anahtar döndürme amacıyla en çok iki
isssertifika 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 strings
incorrect_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
- Azure portalında Event Grid ad alanınıza gidin.
- Event Grid Ad Alanı sayfasında, soldaki menüden Yapılandırma'yı seçin.
- Özel JWT kimlik doğrulaması bölümünde aşağıdaki özellikler için değerleri belirtin:
- Yeni sayfada, aşağıdaki özellikler için değerleri belirtin.
- 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
-
kidisteğe bağlıdır. Varsa, doğrulama için eşleşenkidsertifika 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ğinde
num_attr_pos,num_attr_neg,str_attrstr_list_attrtalepleri doğru veri türlerine sahiptir ve öznitelik olarak kullanılır. - örneğinde
bool_attr,num_attr_to_big,num_attr_floatobj_attrtalepleri 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"
}
}