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, 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ı.
- Harici bir webhook 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:
- 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.
- Yönetilen kimliğe Azure işlevinize veya web kancanıza erişim izni verin.
- Event Grid ad alanınızda özel web kancası ayarlarını yapılandırın.
- İ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.
Uygulamalar
Seçenek 1: Azure İşlevleri aracılığıyla Webhook uygulaması (Microsoft Entra Uygulaması)
Azure İşlevleri, belirteci otomatik olarak doğrulamak için Microsoft.Identity.Web kullanarak web kancası mantığını barındırabilir. Web kancası API'sinin Event Grid çağıran belirteçlerini doğrulaması için bir Microsoft Entra uygulama kaydına ihtiyacınız var. Uygulama kaydı, belirteç verme işlemi için bir Uygulama Kimliği URI'sine sahiptir. İstemci tarafı (Event Grid) zaten bir yönetilen kimliğe sahip.
Avantajlar:
- Yönetecek altyapı yok
- Yerleşik kimlik doğrulama yardımcıları (
Microsoft.Identity.Web) - Dayanıklı, ölçeklenebilir, uygun maliyetli
İşlev aşağıdaki işlemleri yapmalıdır:
- Event Grid yönetilen kimliğinden çağırıcı belirtecini doğrulayın.
- İstemci JSON Web Belirtecini (JWT) doğrulayın.
- "İzin veren veya reddeden bir JSON yanıtı döndür."
Seçenek 2: Dış HTTPS uç noktası uygulaması
Bu uygulama, Microsoft.IdentityModel kitaplıkları kullanılarak Microsoft Entra ID JWT doğrulaması ile herhangi bir dış HTTPS Uç Noktası (herhangi bir bulut altyapısı veya arka uç sistem) olarak gerçekleştirilebilir.
Herhangi bir çalışma zamanını kullanın: .NET, Node.js, Java veya Python.
Temel gereksinimler:
Uç nokta HTTPS olmalıdır.
Çağıran JWT'yi doğrulamalıdır.
Cihaz JWT'sini doğrulamalıdır.
Zaman aşımı süresi içinde yanıt vermesi gerekir (yaklaşık 5 saniye önerilir).
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
Microsoft Entra Id'de bir Microsoft Entra uygulaması oluşturun.
Uygulamanın Genel Bakış sayfasında Uygulama (istemci) Kimliği değerini not edin.
Soldaki menüden API'yi kullanıma sunma'yı seçin. Uygulama Kimliği URI'si'nin yanında Ekle'yi seçin.
Uygulama kimliği URI'sini düzenle bölmesinde Uygulama Kimliği URI değerini not edin ve kaydet'i seçin.
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.
Azure İşlevleri uygulamanıza gidin.
Sol menüde Kimlik Doğrulaması'nı ve ardından Kimlik sağlayıcısı ekle'yi seçin.
Kimlik sağlayıcısı ekle sayfasında, Kimlik Sağlayıcısı için açılan listeden Microsoft'u seçin.
Uygulama kaydı bölümünde, aşağıdaki özellikler için değerleri belirtin:
Belirteç izin verilen izleyiciler bölümünde izin verilen belirteç hedef kitlelerini girin. Açık olmak gerekirse, daha önce not ettiğiniz Microsoft Entra uygulamasının Uygulama Kimliği URI'sini girin. Belirteç kitlesi, Event Grid'den gelen belirteci doğrulamak için kullanılır.
Ek denetimler bölümünde şu adımları izleyin:
App Service kimlik doğrulama ayarları bölümünde şu adımları izleyin:
Özel gereksinimlerinize göre diğer ayarları seçin ve ardından Ekle'yi seçin.
Microsoft Entra ID belirtecini oluşturma ve kullanma
Şimdi Microsoft Entra ID belirtecini oluşturun ve kullanın.
- Kaynak olarak uygulama kimliği URI'si (
api://<ClientID>) ile yönetilen kimliği kullanarak bir Microsoft Entra Id belirteci oluşturun. - 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
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 Web Kancası kimlik doğrulaması bölümünde aşağıdaki özellikler için değerleri belirtin:
- Yönetilen kimlik türü: Kullanıcı tarafından atanan seçin.
- 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.
- 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.
- Microsoft Entra ID kiracı kimliği: Kimliği doğrulanmış bir webhook teslimi için taşıyıcı belirtecin edinilmesinde kullanılan Microsoft Entra kiracı kimliğinin değerini girin.
seçin, sonra daUygula'yı seçin.
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, kimlik, kaynak grubu, uygulama kimliği, URL ve kiracı kimliği gibi alanlardaki 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 öneririz.
Webhook API ayrıntıları
İstek başlıkları
Azure Event Grid istekte aşağıdaki üst bilgileri web kancasına gönderir:
Authorization: Bearer <token>
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 | Privacy-Enhanced Mail (PEM) formatında 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. |
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 200 OK
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Hata kodları:
| Kimlik doğrulama sonucu | İşlev yanıtı | Event Grid MQTT neden kodu |
|---|---|---|
| Açık yetkilendirme reddi | "decision": "deny" |
Yetkili değil |
| Geçersiz / süresi dolmuş belirteç | "decision": "deny" |
Yetkili değil |
| İşlev zaman aşımı | Mevcut Değil | Sunucu kullanılamıyor |
| İşlev hatası / kilitlenme | Mevcut Değil | Sunucu kullanılamıyor |
| Geçici platform hatası | Mevcut Değil | Sunucu kullanılamıyor |
| İç aracı işleme hatası | Mevcut Değil | Sunucu kullanılamıyor |
Yanıt alanı açıklamaları
| Alan | Türü | Gerekli Olduğunda | Açıklama |
|---|---|---|---|
decision |
dize (allow | deny) |
Her zaman gerekli | Hizmet tarafından döndürülen kimlik doğrulama karar işlemi. İzin verilen değerler allow veya deny şeklindedir. |
clientAuthenticationName |
Dize | Gerekli ise decision = allow |
İstemcinin kimlik adı (örneğin, cihaz kimliği veya istemci kimliği). |
attributes |
nesne (sözlük) | İsteğe bağlı decision = allow |
Ek öznitelikleri temsil eden anahtar-değer çiftleri. Değerler int, dize veya dize dizisi olabilir. |
expiration |
integer (Unix zaman damgası, saniye) | İsteğe bağlı decision = allow |
Yetkilendirme kararının sona erme zamanı, Unix zamanı (epoch'tan bu yana geçen saniyeler) olarak ifade edilir. Örnek: 1713782400. |
errorReason |
Dize | İsteğe bağlı decision = deny |
İsteğin neden reddedildiğini açıklayan hata iletisi. Bu değer tanılama için günlüğe kaydedilir. |
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.