Obsługa platformy Azure Kafka w usłudze Spring Cloud
Ten artykuł dotyczy: ✔️ wersja 4.14.0 ✔️ w wersji 5.8.0
W wersji 4.3.0 platforma Spring Cloud Azure dla platformy Kafka obsługuje różne typy poświadczeń w celu uwierzytelniania i nawiązywania połączenia z usługą Azure Event Hubs.
Obsługiwana wersja platformy Kafka
Bieżąca wersja startera powinna być zgodna z klientami platformy Apache Kafka w wersji 2.0.0 przy użyciu języka Java 8 lub nowszego.
Obsługiwane typy uwierzytelniania
Następujące typy uwierzytelnienia są obsługiwane:
- Zwykłe uwierzytelnianie parametry połączenia
- Bezpośrednie uwierzytelnianie parametry połączenia
- Uwierzytelnianie parametry połączenia oparte na usłudze ARM
- Uwierzytelnianie poświadczeń protokołu OAuth
- Uwierzytelnianie tożsamości zarządzanej
- Uwierzytelnianie nazwy użytkownika/hasła
- Uwierzytelnianie nazwy głównej usługi
- Uwierzytelnianie w aplikacjach
DefaultAzureCredential
Jak to działa
Uwierzytelnianie poświadczeń protokołu OAuth
W tej sekcji opisano ogólny przepływ pracy uwierzytelniania OAuth platformy Azure w usłudze Spring Cloud.
Platforma Spring Cloud Azure najpierw utworzy jeden z następujących typów poświadczeń w zależności od konfiguracji uwierzytelniania aplikacji:
ClientSecretCredential
ClientCertificateCredential
UsernamePasswordCredential
ManagedIdentityCredential
Jeśli żaden z tych typów poświadczeń nie zostanie znaleziony, łańcuch poświadczeń za pośrednictwem DefaultAzureTokenCredential
będzie używany do uzyskiwania poświadczeń z właściwości aplikacji, zmiennych środowiskowych, tożsamości zarządzanej lub środowisk IDE. Aby uzyskać szczegółowe informacje, zobacz Spring Cloud Azure authentication (Uwierzytelnianie platformy Azure w usłudze Spring Cloud).
Zwykłe uwierzytelnianie parametry połączenia
W trybie uwierzytelniania parametry połączenia można użyć uwierzytelniania parametry połączenia bezpośrednio lub użyć usługi Azure Resource Manager do pobrania parametry połączenia. Aby uzyskać więcej informacji na temat użycia, zobacz sekcję Podstawowe użycie dla uwierzytelniania parametry połączenia.
Uwaga
Ponieważ wersja 4.3.0, uwierzytelnianie parametry połączenia jest przestarzałe na rzecz uwierzytelniania OAuth.
Konfigurowanie
Konfigurowalne właściwości podczas korzystania z obsługi platformy Kafka z uwierzytelnianiem OAuth
Platforma Azure Spring Cloud dla platformy Kafka obsługuje następujące dwa poziomy opcji konfiguracji:
- Właściwości platformy Kafka platformy Kafka platformy Azure dla usługi Spring Cloud dla usługi Event Hubs.
- Globalne opcje konfiguracji uwierzytelniania i
credential
profile
z prefiksami .spring.cloud.azure
- Konfiguracje na poziomie specyficznym dla platformy Kafka. Konfiguracje na poziomie platformy Kafka są również dostępne dla powiązań strumieni spring boot i Spring Cloud dla
common
zakresów ,consumer
,producer
lubadmin
, które mają różne prefiksy.
Właściwości globalne są uwidacznione za pośrednictwem elementu com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties
. Właściwości specyficzne dla platformy Kafka są widoczne za pośrednictwem org.springframework.boot.autoconfigure.kafka.KafkaProperties
platformy (Spring Boot) i org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties
(binder strumienia Spring Cloud).
Poniższa lista zawiera wszystkie obsługiwane opcje konfiguracji.
Właściwości platformy Kafka platformy Kafka platformy Azure dla usługi Spring Cloud dla usługi Event Hubs.
- Właściwość:
spring.cloud.azure.eventhubs.kafka.enabled
- Opis: czy włączyć bezpłatne połączenie poświadczeń z usługą Azure Event Hubs dla platformy Kafka, wartość domyślna to
true
.
- Właściwość:
Opcje konfiguracji globalnego uwierzytelniania platformy Azure w usłudze Spring Cloud
- Prefiks:
spring.cloud.azure
- Obsługiwane opcje:
spring.cloud.azure.credential.*
,spring.cloud.azure.profile.*
Aby uzyskać pełną listę opcji konfiguracji globalnej, zobacz Globalne właściwości konfiguracji.
- Prefiks:
Typowa konfiguracja platformy Kafka platformy Spring Boot
- Prefiks:
spring.kafka.properties.azure
- Przykład:
spring.kafka.properties.azure
.credential.*
- Prefiks:
Opcje konfiguracji konsumentów platformy Spring Kafka
- Prefiks:
spring.kafka.consumer.properties.azure
- Przykład:
spring.kafka.consumer.properties.azure
.credential.*
- Prefiks:
Opcje konfiguracji producenta Spring Kafka
- Prefiks:
spring.kafka.producer.properties.azure
- Przykład:
spring.kafka.producer.properties.azure
.credential.*
- Prefiks:
Opcje konfiguracji administratora platformy Spring Kafka
- Prefiks:
spring.kafka.admin.properties.azure
- Przykład:
spring.kafka.admin.properties.azure
.credential.*
- Prefiks:
Typowa konfiguracja powiązania platformy Kafka usługi Spring Cloud Stream
- Prefiks:
spring.cloud.stream.kafka.binder.configuration.azure
- Przykład:
spring.cloud.stream.kafka.binder.configuration.azure
.credential.*
- Prefiks:
Konfiguracja klienta platformy Kafka Binder w usłudze Spring Cloud Stream
- Prefiks:
spring.cloud.stream.kafka.binder.consumer-properties.azure
- Przykład:
spring.cloud.stream.kafka.binder.consumer-properties.azure
.credential.*
- Prefiks:
Konfiguracja producenta integratora platformy Kafka w usłudze Spring Cloud Stream
- Prefiks:
spring.cloud.stream.kafka.binder.producer-properties.azure
- Przykład:
spring.cloud.stream.kafka.binder.producer-properties.azure
.credential.*
- Prefiks:
Konfiguracja administratora narzędzia binder platformy Kafka w usłudze Spring Cloud Stream
- Prefiks: Nieobsługiwane należy używać typowej konfiguracji platformy Kafka platformy Spring Boot lub administratora.
W poniższej tabeli przedstawiono typowe opcje konfiguracji platformy Spring Boot platformy Kafka:
Nazwa/nazwisko | opis |
---|---|
spring.kafka.properties.azure.credential.client-certificate-password | Hasło pliku certyfikatu. |
spring.kafka.properties.azure.credential.client-certificate-path | Ścieżka pliku certyfikatu PEM do użycia podczas przeprowadzania uwierzytelniania jednostki usługi na platformie Azure. |
spring.kafka.properties.azure.credential.client-id | Identyfikator klienta do użycia podczas przeprowadzania uwierzytelniania jednostki usługi za pomocą platformy Azure. Jest to starsza właściwość. |
spring.kafka.properties.azure.credential.client-secret | Klucz tajny klienta używany podczas przeprowadzania uwierzytelniania jednostki usługi za pomocą platformy Azure. Jest to starsza właściwość. |
spring.kafka.properties.azure.credential.managed-identity-enabled | Czy włączyć tożsamość zarządzaną do uwierzytelniania za pomocą platformy Azure. Jeśli wartość true i client-id jest ustawiona, użyje identyfikatora klienta jako identyfikatora klienta tożsamości zarządzanej przypisanej przez użytkownika. Domyślna wartość to false. |
spring.kafka.properties.azure.credential.password | Hasło do użycia podczas przeprowadzania uwierzytelniania nazwy użytkownika/hasła na platformie Azure. |
spring.kafka.properties.azure.credential.username | Nazwa użytkownika do użycia podczas przeprowadzania uwierzytelniania nazwy użytkownika/hasła na platformie Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint | Punkt końcowy firmy Microsoft Entra do nawiązania połączenia. |
spring.kafka.properties.azure.profile.tenant-id | Identyfikator dzierżawy dla zasobów platformy Azure. Dozwolone tenant-id wartości to: common , organizations , consumers lub identyfikator dzierżawy. |
Uwaga
Opcje konfiguracji na różnych poziomach stosują następujące reguły. Bardziej szczegółowe opcje konfiguracji mają wyższy priorytet niż typowe. Na przykład:
- Typowe opcje konfiguracji platformy Spring Kafka zastępują opcje globalne.
- Opcje konfiguracji konsumentów platformy Spring Kafka zastępują typowe opcje.
- Opcje konfiguracji producenta Spring Kafka zastępują typowe opcje.
- Opcje konfiguracji administratora platformy Spring Kafka zastępują typowe opcje.
- Opcje narzędzia Binder platformy Kafka usługi Spring Cloud Stream są podobne do powyższych.
Konfigurowalne właściwości podczas korzystania z obsługi platformy Kafka przy użyciu zwykłego uwierzytelniania parametry połączenia
W poniższej tabeli przedstawiono typowe opcje konfiguracji usługi Spring Boot Event Hubs dla platformy Kafka:
Właściwości | opis |
---|---|
spring.cloud.azure.eventhubs.kafka.enabled | Czy włączyć obsługę platformy Kafka w usłudze Azure Event Hubs. Wartość domyślna to true. |
spring.cloud.azure.eventhubs.connection-string | Parametry połączenia usługi Azure Event Hubs. Podaj tę wartość, jeśli chcesz podać parametry połączenia bezpośrednio. |
spring.cloud.azure.eventhubs.namespace | Przestrzeń nazw usługi Azure Event Hubs. Podaj tę wartość, jeśli chcesz pobrać informacje o połączeniu za pośrednictwem usługi Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group | Grupa zasobów przestrzeni nazw usługi Azure Event Hubs. Podaj tę wartość, jeśli chcesz pobrać informacje o połączeniu za pośrednictwem usługi Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id | Identyfikator subskrypcji. Podaj tę wartość, jeśli chcesz pobrać informacje o połączeniu za pośrednictwem usługi Azure Resource Manager. |
Konfiguracja zależności
Dodaj następującą zależność do projektu. Spowoduje to automatyczne uwzględnienie spring-boot-starter
zależności w projekcie przechodnio.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Uwaga
Pamiętaj, aby dodać element BOM spring-cloud-azure-dependencies
wraz z powyższą zależnością. Aby uzyskać szczegółowe informacje, zobacz sekcję Wprowadzenie w przewodniku dla deweloperów platformy Azure platformy Spring Cloud.
Podstawowy sposób użycia
W poniższych sekcjach przedstawiono klasyczne scenariusze użycia aplikacji Spring Boot.
Korzystanie z uwierzytelniania OAuth
W przypadku korzystania z uwierzytelniania OAuth udostępnianego przez platformę Spring Cloud Azure dla platformy Kafka można skonfigurować określone poświadczenia przy użyciu powyższych konfiguracji. Alternatywnie możesz skonfigurować nic o poświadczeniach, w tym przypadku platforma Spring Cloud Azure załaduje poświadczenia ze środowiska. W tej sekcji opisano użycie, które ładują poświadczenia ze środowiska interfejsu wiersza polecenia platformy Azure lub środowiska hostingu usługi Azure Spring Apps.
Uwaga
Jeśli zdecydujesz się użyć podmiotu zabezpieczeń do uwierzytelniania i autoryzacji za pomocą identyfikatora Entra firmy Microsoft na potrzeby uzyskiwania dostępu do zasobu platformy Azure, zobacz sekcję Autoryzowanie dostępu za pomocą identyfikatora Entra firmy Microsoft, aby upewnić się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do zasobu platformy Azure.
W poniższej sekcji opisano scenariusze korzystające z różnych bibliotek ekosystemu Spring z uwierzytelnianiem OAuth.
Obsługa aplikacji Spring Kafka
W tej sekcji opisano scenariusz użycia aplikacji Spring Boot przy użyciu biblioteki Spring Kafka lub Spring Integration Kafka.
Konfiguracja zależności
<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>
Aktualizacja konfiguracji
Aby użyć uwierzytelniania OAuth, wystarczy określić punkt końcowy usługi Event Hubs, jak pokazano w poniższym przykładzie:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Obsługa aplikacji platformy Kafka powiązanego z usługą Spring Cloud Stream
W tej sekcji opisano scenariusz użycia aplikacji Spring Boot korzystających z biblioteki platformy Kafka binder usługi Spring Cloud Stream.
Konfiguracja zależności
<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>
Konfigurowanie
Aby użyć uwierzytelniania OAuth, wystarczy określić punkt końcowy usługi Event Hubs, jak pokazano w poniższym przykładzie:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Uwaga
Jeśli używasz wersji 4.3.0
, nie zapomnij ustawić spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
właściwości w celu włączenia całego przepływu pracy uwierzytelniania OAuth, gdzie kafka-binder-name
jest kafka
domyślnie w jednej aplikacji binder platformy Kafka. AzureKafkaSpringCloudStreamConfiguration
Konfiguracja określa parametry zabezpieczeń protokołu OAuth dla KafkaBinderConfigurationProperties
elementu , które są używane do KafkaOAuth2AuthenticateCallbackHandler
włączania tożsamości platformy Azure.
W przypadku wersji po 4.4.0
tej właściwości ta właściwość zostanie automatycznie dodana dla każdego środowiska bindera Kafka, więc nie trzeba jej dodawać ręcznie.
Przykłady
Zobacz repozytorium azure-spring-boot-samples w witrynie GitHub.
Korzystanie z uwierzytelniania parametry połączenia
Aby pobrać parametry połączenia, możesz użyć uwierzytelniania parametry połączenia bezpośrednio lub użyć usługi Azure Resource Manager.
Uwaga
Ponieważ wersja 4.3.0, uwierzytelnianie parametry połączenia jest przestarzałe na rzecz uwierzytelniania OAuth.
Ponieważ wersja 4.5.0, w przypadku korzystania z uwierzytelniania parametry połączenia za pomocą platformy Spring Cloud Stream wymagana jest następująca właściwość, aby upewnić się, że parametry połączenia może obowiązywać, gdzie wartość <kafka-binder-name>
powinna być kafka
taka, gdy nie ma dostosowanej konfiguracji dla nazwy powiązania platformy Kafka.
spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Konfiguracja zależności
Dodaj następujące zależności, jeśli chcesz przeprowadzić migrację aplikacji platformy Apache Kafka do korzystania z usługi Azure Event Hubs dla platformy Kafka.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Jeśli chcesz pobrać parametry połączenia przy użyciu usługi Azure Resource Manager, dodaj następującą zależność:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Konfigurowanie
Bezpośrednie używanie usługi Event Hubs parametry połączenia
Najprostszym sposobem nawiązywania połączenia z usługą Event Hubs dla platformy Kafka jest użycie parametry połączenia. Wystarczy dodać następującą właściwość.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Pobieranie parametry połączenia przy użyciu usługi Azure Resource Manager
Jeśli nie chcesz konfigurować parametry połączenia w aplikacji, możesz użyć usługi Azure Resource Manager, aby pobrać parametry połączenia. Aby przeprowadzić uwierzytelnianie za pomocą usługi Azure Resource Manager, możesz również użyć poświadczeń przechowywanych w interfejsie wiersza polecenia platformy Azure lub innym lokalnym narzędziu programistycznym, takim jak Visual Studio Code lub Intellij IDEA. Alternatywnie możesz użyć tożsamości zarządzanej, jeśli aplikacja jest wdrożona w chmurze platformy Azure. Upewnij się, że podmiot zabezpieczeń ma wystarczające uprawnienia do odczytywania metadanych zasobów.
Uwaga
Jeśli zdecydujesz się użyć podmiotu zabezpieczeń do uwierzytelniania i autoryzacji za pomocą identyfikatora Entra firmy Microsoft na potrzeby uzyskiwania dostępu do zasobu platformy Azure, zobacz sekcję Autoryzowanie dostępu za pomocą identyfikatora Entra firmy Microsoft, aby upewnić się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do zasobu platformy Azure.
Aby pobrać parametry połączenia przy użyciu usługi Azure Resource Manager, wystarczy dodać następującą właściwość.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Przykłady
Zobacz repozytorium azure-spring-boot-samples w witrynie GitHub.