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.
Spring Cloud Azure Kafka desteği, Spring uygulamalarının OAuth kimlik bilgilerini veya bağlantı dizelerini kullanarak kimlik doğrulamasına ve Azure Event Hubs bağlanmasına yardımcı olur. Bu makalede desteklenen kimlik doğrulama türleri, yapılandırma seçenekleri, bağımlılıklar ve kullanım senaryoları açıklanmaktadır.
Desteklenen Kafka sürümü
Starter'ın geçerli sürümü Apache Kafka İstemcileri 2.0.0 ile uyumludur ve Java 8 veya üzerini kullanır.
Desteklenen kimlik doğrulama türleri
Başlatıcı aşağıdaki kimlik doğrulama türlerini destekler:
- 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 bilgileriyle kimlik doğrulama
- 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 bilgileriyle kimlik doğrulama
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
Uygulama bu kimlik bilgileri türlerinden birini kullanmıyorsa, uygulama özellikleri, ortam değişkenleri, yönetilen kimlik veya IDE'lerden kimlik bilgilerini almak için aracılığıyla kimlik bilgisi zincirini DefaultAzureTokenCredential kullanı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
Sürüm 4.3.0'dan bu yana bağlantı dizesi kimlik doğrulaması, OAuth kimlik doğrulamasına göre 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 Kafka için Spring Cloud Azure ö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'un 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ı kullanın.
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 sistemlerden devralınan 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 sistemlerden kalan bir özelliktir. |
spring.kafka.properties.azure.credential.managed-identity-enabled |
Azure’da kimlik doğrulamak için yönetilen kimliğin etkinleştirilip etkinleştirilmeyeceği. ve client-id ayarlanırsatrue, istemci kimliği kullanıcı tarafından atanan yönetilen kimlik istemci kimliğidir. 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. Örneğin:
- 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 aynı deseni izler.
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 bağımlılık, projenizdeki bağımlılığı otomatik olarak içerir spring-boot-starter .
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Not
Önceki bağımlılıkla birlikte spring-cloud-azure-dependencies ürün reçetesini de 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
Spring Cloud Azure'un Kafka için sağladığı OAuth kimlik doğrulamasını kullandığınızda, önceki yapılandırmaları kullanarak belirli kimlik bilgilerini yapılandırabilirsiniz. Alternatif olarak, hiçbir kimlik bilgisi yapılandırmamayı seçebilirsiniz. Bu durumda Spring Cloud Azure ortamdan kimlik bilgilerini yükler. Bu bölümde, kimlik bilgilerinin Azure CLI ortamından veya Azure Spring Apps barındırma ortamından nasıl yüklenecekleri açıklanmaktadır.
Not
Azure kaynağa erişim için Microsoft Entra ID kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanmayı seçerseniz, güvenlik sorumlusunun Azure kaynağına erişmek için yeterli izne sahip olduğundan emin olmak için Microsoft Entra ID ile erişimi yetkilendirme bölümüne bakın.
Aşağıdaki bölümde, OAuth kimlik doğrulaması ile farklı Spring ekosistem kitaplıkları kullanan senaryolar açıklanmaktadır.
Spring Kafka uygulama desteği
Bu bölümde, Spring Kafka veya Spring Integration Kafka kitaplığını kullanan bir Spring Boot uygulamasının 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ı belirtin:
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ı belirtin:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Not
4.3.0 sürümünü kullanıyorsanız, OAuth kimlik doğrulama iş akışının tamamını etkinleştirmek için spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration özelliğini ayarlayın.
kafka-binder-name, tek bir Kafka bağlayıcı uygulamasında varsayılan olarak kafka durumundadır. Yapılandırma AzureKafkaSpringCloudStreamConfiguration , için KafkaBinderConfigurationPropertiesOAuth güvenlik parametrelerini belirtir. Bu yapılandırma, Azure Kimliğini etkinleştirmek için kullanılırKafkaOAuth2AuthenticateCallbackHandler.
sürümünden sonraki 4.4.0sürümler 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 hizmetinizde yönetilen kimliği etkinleştirin ve
Azure Event Hubs Data SenderileAzure Event Hubs Data Receiverrollerini atayın. 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ğinizle birlikte
spring.cloud.azure.credential.client-idözelliğini de ekleyin.
Örnekler
GitHub'daki azure-spring-boot-samples depoya bakın.
Bağlantı dizesi kimlik doğrulamasını kullanın
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
Sürüm 5.0.0'dan bu yana Spring Cloud Stream çerçevesiyle bağlantı dizesi kimlik doğrulaması kullanırken, bağlantı dizesi çalıştığından emin olmak için yine de aşağıdaki özelliğe ihtiyacınız vardır. Kafka bağlayıcı adınızı özelleştirmezseniz değeri <kafka-binder-name> şu şekilde olmalıdır kafka : 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.0 ise, java.lang.IllegalStateException: kafka_context has not been refreshed yet özel durumuyla 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ı dizesi 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ğa erişim için Microsoft Entra ID kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanmayı seçerseniz, güvenlik sorumlusunun Azure kaynağına erişmek için yeterli izne sahip olduğundan emin olmak için Microsoft Entra ID ile erişimi yetkilendirme bölümüne bakın.
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}
Örnekler
GitHub'daki azure-spring-boot-samples depoya bakın.