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:
- 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.
- Ortak anahtarlarınızı içeren CA sertifikasını barındıran bir Azure Key Vault hesabı oluşturun.
- Ad alanının yönetilen kimliği için Azure Key Vault'a rol ataması ekleyin.
- Event Grid ad alanınızda özel kimlik doğrulama ayarlarını yapılandırma
- İ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
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"
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:
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)
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 $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
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 belirteçlerinin veren taleplerinin değerini girin.
Veren sertifikası ekle'yi 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ı. Aboneliklerinizden sertifikayı ve anahtar kasasını seçmek için bunun yerine 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.
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
, , string
array 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_attr
str_attr
str_list_attr
dönüştürülür çünkü doğru türleri int32
, , . string
array of strings
incorrect_attr_1
, incorrect_attr_2
incorrect_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"
}
}
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin