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.
Kafka için Spring Cloud Azure, 4.3.0 sürümünden itibaren kimlik doğrulaması yapmak ve Azure Event Hubs'a bağlanmak için çeşitli kimlik bilgisi türlerini destekler.
Desteklenen Kafka sürümü
Starter'ın geçerli sürümü Java 8 veya üzerini kullanan Apache Kafka İstemcileri 2.0.0 ile uyumlu olmalıdır.
Desteklenen kimlik doğrulama türleri
Aşağıdaki kimlik doğrulama türleri desteklenir:
- Düz bağlantı dizesi kimlik doğrulaması
- Doğrudan bağlantı dizesi kimlik doğrulaması
- ARM tabanlı bağlantı dizesi kimlik doğrulaması
- OAuth kimlik bilgisi kimlik doğrulaması
- Yönetilen kimlik kimlik doğrulaması
- Kullanıcı adı/parola kimlik doğrulaması
- Hizmet sorumlusu kimlik doğrulaması
- kimlik doğrulaması
DefaultAzureCredential
Nasıl çalışır?
OAuth kimlik bilgisi kimlik doğrulaması
Bu bölümde Spring Cloud Azure OAuth kimlik doğrulamasının genel iş akışı açıklanmaktadır.
Spring Cloud Azure, uygulama kimlik doğrulaması yapılandırmasına bağlı olarak ilk olarak aşağıdaki kimlik bilgileri türlerinden birini oluşturur:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Bu tür kimlik bilgilerinin hiçbiri bulunmazsa, DefaultAzureTokenCredential aracılığıyla kimlik bilgisi zinciri uygulama özelliklerinden, ortam değişkenlerinden, yönetilen kimlikten veya IDE'lerden kimlik bilgilerini almak için kullanılır. Ayrıntılı bilgi için bkz. Spring Cloud Azure kimlik doğrulaması
Düz bağlantı dizesi kimlik doğrulaması
Bağlantı dizesi kimlik doğrulama modu için bağlantı dizesi kimlik doğrulamasını doğrudan kullanabilir veya bağlantı dizesini almak için Azure Resource Manager'ı kullanabilirsiniz. Kullanım hakkında daha fazla bilgi için Bağlantı dizesi kimlik doğrulaması için temel kullanım bölümüne bakın.
Not
4.3.0 sürümünden bu yana, bağlantı dizesi kimlik doğrulaması OAuth kimlik doğrulamaları için kullanım dışı bırakılmıştır.
Konfigürasyon
OAuth kimlik doğrulaması ile Kafka desteği kullanılırken yapılandırılabilir özellikler
Kafka için Spring Cloud Azure aşağıdaki iki yapılandırma seçeneğini destekler:
- Event Hubs için Spring Cloud Azure Kafka özellikleri.
-
credentialön ekleriyleprofilevespring.cloud.azuregenel kimlik doğrulama yapılandırma seçenekleri. - Kafka'ya özgü düzey yapılandırmaları. Kafka düzeyinde yapılandırmalar, farklı ön eklere sahip
common,consumer,producerveyaadminkapsamları için Spring Boot ve Spring Cloud Stream bağlayıcıları için de kullanılabilir.
Genel özellikler com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesaracılığıyla kullanıma sunulur. Kafka'ya özgü özellikler org.springframework.boot.autoconfigure.kafka.KafkaProperties (Spring Boot) ve org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties (Spring Cloud Stream bağlayıcısı) aracılığıyla kullanıma sunulur.
Aşağıdaki listede desteklenen tüm yapılandırma seçenekleri gösterilmektedir.
Event Hubs için Spring Cloud Azure Kafka özellikleri.
- Özellik:
spring.cloud.azure.eventhubs.kafka.enabled - Açıklama: Kafka için Azure Event Hubs'a kimlik bilgisi içermeyen bağlantının etkinleştirilip etkinleştirilmeyileceği, varsayılan değer
true.
- Özellik:
Spring Cloud Azure genel kimlik doğrulaması yapılandırma seçenekleri
- Ön ek:
spring.cloud.azure - Desteklenen seçenekler:
spring.cloud.azure.credential.*,spring.cloud.azure.profile.*
Genel yapılandırma seçeneklerinin tam listesi için bkz. Genel yapılandırma özellikleri.
- Ön ek:
Spring Boot Kafka ortak yapılandırması
- Ön ek:
spring.kafka.properties.azure - Örnek:
spring.kafka.properties.azure.credential.*
- Ön ek:
Spring Kafka tüketici yapılandırma seçenekleri
- Ön ek:
spring.kafka.consumer.properties.azure - Örnek:
spring.kafka.consumer.properties.azure.credential.*
- Ön ek:
Spring Kafka üretici yapılandırma seçenekleri
- Ön ek:
spring.kafka.producer.properties.azure - Örnek:
spring.kafka.producer.properties.azure.credential.*
- Ön ek:
Spring Kafka yönetici yapılandırma seçenekleri
- Ön ek:
spring.kafka.admin.properties.azure - Örnek:
spring.kafka.admin.properties.azure.credential.*
- Ön ek:
Spring Cloud Stream Kafka Binder ortak yapılandırması
- Ön ek:
spring.cloud.stream.kafka.binder.configuration.azure - Örnek:
spring.cloud.stream.kafka.binder.configuration.azure.credential.*
- Ön ek:
Spring Cloud Stream Kafka Binder tüketici yapılandırması
- Ön ek:
spring.cloud.stream.kafka.binder.consumer-properties.azure - Örnek:
spring.cloud.stream.kafka.binder.consumer-properties.azure.credential.*
- Ön ek:
Spring Cloud Stream Kafka Binder üretici yapılandırması
- Ön ek:
spring.cloud.stream.kafka.binder.producer-properties.azure - Örnek:
spring.cloud.stream.kafka.binder.producer-properties.azure.credential.*
- Ön ek:
Spring Cloud Stream Kafka Binder yönetici yapılandırması
- Ön ek: Desteklenmez, Spring Boot Kafka ortak veya yönetici yapılandırmasını kullanmalıdır.
Aşağıdaki tabloda Spring Boot Kafka ortak yapılandırma seçenekleri gösterilmektedir:
| Ad | Açıklama |
|---|---|
| spring.kafka.properties.azure.credential.client-certificate-password | Sertifika dosyasının parolası. |
| spring.kafka.properties.azure.credential.client-certificate-path | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak PEM sertifika dosyasının yolu. |
| spring.kafka.properties.azure.credential.client-id | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci kimliği. Bu eski bir özelliktir. |
| spring.kafka.properties.azure.credential.client-secret | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci gizli dizisi. Bu eski bir özelliktir. |
| spring.kafka.properties.azure.credential.managed-identity-enabled | Yönetilen kimliğin Azure ile kimlik doğrulaması yapmasının etkinleştirilip etkinleştirilmeyileceği.
true ve client-id ayarlanırsa, kullanıcı tarafından atanan yönetilen kimlik istemci kimliği olarak istemci kimliğini kullanır. Varsayılan değer false. |
| spring.kafka.properties.azure.credential.password | Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak parola. |
| spring.kafka.properties.azure.credential.username | Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak kullanıcı adı. |
| spring.kafka.properties.azure.profile.environment.active-directory-endpoint | Bağlanacak Microsoft Entra uç noktası. |
| spring.kafka.properties.azure.profile.tenant-id | Azure kaynakları için kiracı kimliği.
tenant-id için izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. |
Not
Farklı düzeylerdeki yapılandırma seçenekleri aşağıdaki kuralları uygular. Daha belirli yapılandırma seçeneklerinin önceliği yaygın olanlardan daha yüksektir. Mesela:
- Spring Kafka ortak yapılandırma seçenekleri genel seçeneklerin yerini alır.
- Spring Kafka tüketici yapılandırma seçenekleri, ortak seçeneklerin yerini alır.
- Spring Kafka üretici yapılandırma seçenekleri, ortak seçeneklerin yerini alır.
- Spring Kafka yönetici yapılandırma seçenekleri, ortak seçeneklerin yerini alır.
- Spring Cloud Stream Kafka Binder seçenekleri de yukarıdaki gibidir.
Düz bağlantı dizesi kimlik doğrulaması ile Kafka desteği kullanılırken yapılandırılabilir özellikler
Aşağıdaki tabloda Kafka için Spring Boot Event Hubs yaygın yapılandırma seçenekleri gösterilmektedir:
| Mülk | Açıklama |
|---|---|
| spring.cloud.azure.eventhubs.kafka.enabled |
Azure Event Hubs Kafka desteğinin etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer true. |
| spring.cloud.azure.eventhubs.connection-string |
Azure Event Hubs bağlantı dizesi. Bağlantı dizesini doğrudan sağlamak istediğinizde bu değeri belirtin. |
| spring.cloud.azure.eventhubs.namespace | Azure Event Hubs ad alanı. Azure Resource Manager aracılığıyla bağlantı bilgilerini almak istediğinizde bu değeri belirtin. |
| spring.cloud.azure.eventhubs.resource.resource-group | Azure Event Hubs ad alanının kaynak grubu. Azure Resource Manager aracılığıyla bağlantı bilgilerini almak istediğinizde bu değeri belirtin. |
| spring.cloud.azure.profile.subscription-id |
Abonelik kimliği. Azure Resource Manager aracılığıyla bağlantı bilgilerini almak istediğinizde bu değeri belirtin. |
Bağımlılık kurulumu
Projenize aşağıdaki bağımlılığı ekleyin. Bu, projenizdeki spring-boot-starter bağımlılığını geçişli olarak otomatik olarak içerir.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Not
Ürün reçetesi spring-cloud-azure-dependencies yukarıdaki bağımlılıkla birlikte eklemeyi unutmayın. Ayrıntılar için Spring Cloud Azure geliştirici kılavuzuBaşlarken bölümüne bakın.
Temel kullanım
Aşağıdaki bölümlerde klasik Spring Boot uygulaması kullanım senaryoları gösterilmektedir.
OAuth kimlik doğrulamasını kullanma
Kafka için Spring Cloud Azure tarafından sağlanan OAuth kimlik doğrulamasını kullandığınızda, yukarıdaki yapılandırmaları kullanarak belirli kimlik bilgilerini yapılandırabilirsiniz. Alternatif olarak, kimlik bilgileri hakkında hiçbir şey yapılandırmamayı seçebilirsiniz. Bu durumda Spring Cloud Azure, kimlik bilgilerini ortamdan yükler. Bu bölümde, Azure CLI ortamından veya Azure Spring Apps barındırma ortamından kimlik bilgilerini yükleyen kullanımlar açıklanmaktadır.
Not
Azure kaynağına erişim için Microsoft Entra Id ile kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanmayı seçerseniz, güvenlik sorumlusuna Azure kaynağına erişmek için yeterli iznin verildiğinden emin olmak için Microsoft Entra Id ile erişimi yetkilendirme
Aşağıdaki bölümde, OAuth kimlik doğrulaması ile farklı Spring ekosistem kitaplıklarının kullanıldığı senaryolar açıklanmaktadır.
Spring Kafka uygulama desteği
Bu bölümde Spring Kafka veya Spring Integration Kafka kitaplığını kullanan Spring Boot uygulaması kullanım senaryosu açıklanmaktadır.
Bağımlılık kurulumu
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<!-- Using Spring Kafka library only-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:2.8.6-->
</dependency>
<!-- Using Spring Integration library only -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:5.5.12-->
</dependency>
Yapılandırma güncelleştirmesi
OAuth kimlik doğrulamasını kullanmak için, aşağıdaki örnekte gösterildiği gibi Event Hubs uç noktasını belirtmeniz gerekir:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Spring Cloud Stream bağlayıcısı Kafka uygulama desteği
Bu bölümde Spring Cloud Stream bağlayıcı kafka kitaplığını kullanan Spring Boot uygulamaları için kullanım senaryosu açıklanmaktadır.
Bağımlılık kurulumu
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:3.2.3-->
</dependency>
Konfigürasyon
OAuth kimlik doğrulamasını kullanmak için aşağıdaki örnekte gösterildiği gibi Event Hubs uç noktasını belirtmeniz gerekir:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Not
4.3.0sürümünü kullanıyorsanız, spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration tek bir Kafka bağlayıcı uygulamasında varsayılan olarak kafka-binder-name olan tüm OAuth kimlik doğrulama iş akışını etkinleştirmek için kafka özelliğini ayarlamayı unutmayın. Yapılandırma AzureKafkaSpringCloudStreamConfiguration, azure kimliğini etkinleştirmek için KafkaBinderConfigurationProperties kullanılan KafkaOAuth2AuthenticateCallbackHandleriçin OAuth güvenlik parametrelerini belirtir.
4.4.0sonraki sürüm için bu özellik her Kafka bağlayıcı ortamı için otomatik olarak eklenir, bu nedenle el ile eklemeniz gerekmez.
OAuth kimlik doğrulaması için yönetilen kimlik kullanma
Yönetilen kimliği kullanmak için hizmetiniz için yönetilen kimliği etkinleştirmeniz ve
Azure Event Hubs Data ReceiverveAzure Event Hubs Data Senderrollerini atamanız gerekir. Daha fazla bilgi için bkz.erişim hakları için Azure rolleri atama. application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
spring: cloud: azure: credential: managed-identity-enabled: trueÖnemli
Kullanıcı tarafından atanan yönetilen kimlik kullanıyorsanız, kullanıcı tarafından atanan yönetilen kimlik istemci kimliğiniz ile
spring.cloud.azure.credential.client-idözelliğini de eklemeniz gerekir.
Örnekleri
GitHub'daki azure-spring-boot-samples deposuna bakın.
Bağlantı dizesi kimlik doğrulamayı kullanma
Bağlantı dizesi kimlik doğrulamasını doğrudan kullanabilir veya bağlantı dizesini almak için Azure Resource Manager'ı kullanabilirsiniz.
-
Spring Cloud Azure 5.x
-
Spring Cloud Azure 4.x
Not
5.0.0 sürümünden bu yana, Spring Cloud Stream çerçevesiyle bağlantı dizesi kimlik doğrulaması kullanılırken, bağlantı dizesinin etkili olabileceğinden emin olmak için aşağıdaki özellik hala gereklidir; burada Kafka bağlayıcı adınız için özelleştirilmiş bir yapılandırma olmadığında <kafka-binder-name> değerinin kafka olması gerekir: spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Kullandığınız spring-cloud-dependencies sürümü 2022.0.0ise, java.lang.IllegalStateException: kafka_context has not been refreshed yetözel durumla karşılaşırsınız. Bu sorunu çözmek için daha yüksek bir sürüme yükseltin.
Bağımlılık kurulumu
Apache Kafka uygulamanızı Kafka için Azure Event Hubs kullanacak şekilde geçirmek istiyorsanız aşağıdaki bağımlılıkları ekleyin.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Azure Resource Manager'ı kullanarak bağlantı dizesini almak istiyorsanız aşağıdaki bağımlılığı ekleyin:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Konfigürasyon
Event Hubs bağlantı dizesini doğrudan kullanma
Kafka için Event Hubs'a bağlanmanın en basit yolu bağlantı dizesidir. Yalnızca aşağıdaki özelliği ekleyin.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Bağlantı dizesini almak için Azure Resource Manager'ı kullanma
Uygulamanızda bağlantı dizesini yapılandırmak istemiyorsanız, bağlantı dizesini almak için Azure Resource Manager'ı kullanabilirsiniz. Azure Resource Manager ile kimlik doğrulaması yapmak için Azure CLI'da veya Visual Studio Code veya Intellij IDEA gibi başka bir yerel geliştirme aracında depolanan kimlik bilgilerini de kullanabilirsiniz. Alternatif olarak, uygulamanız Azure Bulut'a dağıtıldıysa Yönetilen Kimlik'i kullanabilirsiniz. Sorumlunun kaynak meta verilerini okumak için yeterli izne sahip olduğundan emin olun.
Not
Azure kaynağına erişim için Microsoft Entra ID ile kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanmayı seçerseniz güvenlik sorumlusuna Azure kaynağına erişmek için yeterli izin verildiğinden emin olmak için Microsoft Entra Id ile erişimi yetkilendirme
Bağlantı dizesini almak için Azure Resource Manager'ı kullanmak için aşağıdaki özelliği eklemeniz gerekir.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Örnekleri
GitHub'daki azure-spring-boot-samples deposuna bakın.