Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Stöd för Spring Cloud Azure Kafka hjälper Spring-program att autentisera och ansluta till Azure Event Hubs med hjälp av OAuth-autentiseringsuppgifter eller anslutningssträngar. Den här artikeln beskriver de autentiseringstyper, konfigurationsalternativ, beroenden och användningsscenarier som stöds.
Kafka-version som stöds
Den aktuella versionen av startprogrammet är kompatibel med Apache Kafka-klienterna 2.0.0 och använder Java 8 eller senare.
Autentiseringstyper som stöds
Startprogrammet stöder följande autentiseringstyper:
- Autentisering med vanlig anslutningssträng
- Direktanslutningssträngsautentisering
- ARM-baserad anslutningssträngsautentisering
- Autentisering med OAuth-autentiseringsuppgifter
- Hanterad identitetsautentisering
- Autentisering med användarnamn/lösenord
- Autentisering med service principal
-
DefaultAzureCredentialautentisering
Så här fungerar det
Autentisering med OAuth-autentiseringsuppgifter
I det här avsnittet beskrivs det övergripande arbetsflödet för Spring Cloud Azure OAuth-autentisering.
Spring Cloud Azure skapar först en av följande typer av autentiseringsuppgifter, beroende på konfigurationen för programautentisering:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Om programmet inte använder någon av dessa typer av autentiseringsuppgifter använder programmet autentiseringskedjan för DefaultAzureTokenCredential att hämta autentiseringsuppgifter från programegenskaper, miljövariabler, hanterad identitet eller IDE:er. Detaljerad information finns i Spring Cloud Azure-autentisering.
Autentisering med vanlig anslutningssträng
För autentiseringsläget med anslutningssträng kan du antingen använda autentisering med anslutningssträng direkt eller använda Azure Resource Manager för att hämta anslutningssträngen. Mer information om användningen finns i avsnittet Grundläggande användning för autentisering av anslutningssträngar.
Obs!
Eftersom version 4.3.0 är reťazec pripojenia autentisering inaktuell till förmån för OAuth-autentisering.
Konfiguration
Konfigurerbara egenskaper när du använder Kafka-stöd med OAuth-autentisering
Spring Cloud Azure for Kafka stöder följande två konfigurationsalternativ:
- Spring Cloud Azure för Event Hubs Kafka-egenskaper.
- Konfigurationsalternativen för global autentisering för
credentialochprofilemed prefix förspring.cloud.azure. - Kafka-specifika nivåkonfigurationer. Kafka-nivåkonfigurationerna är också tillgängliga för Spring Boot- och Spring Cloud Stream-pärmar för
common,consumer,producerelleradminomfång som har olika prefix.
De globala egenskaperna är tillgängliga via com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties. Kafka-specifika egenskaper exponeras via org.springframework.boot.autoconfigure.kafka.KafkaProperties (Spring Boot) och org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties (Spring Cloud Stream binder).
I följande lista visas alla konfigurationsalternativ som stöds.
Spring Cloud Azure för Event Hubs Kafka-egenskaper.
- Egenskap:
spring.cloud.azure.eventhubs.kafka.enabled - Beskrivning: om anslutning utan autentiseringsuppgifter till Azure Event Hubs för Kafka ska aktiveras; standardvärdet är
true.
- Egenskap:
Konfigurationsalternativ för global autentisering i Spring Cloud Azure
- Prefix:
spring.cloud.azure - Alternativ som stöds:
spring.cloud.azure.credential.*,spring.cloud.azure.profile.*
En fullständig lista över globala konfigurationsalternativ finns i Globala konfigurationsegenskaper.
- Prefix:
Vanliga konfigurationer för Spring Boot Kafka
- Prefix:
spring.kafka.properties.azure - Exempel:
spring.kafka.properties.azure.credential.*
- Prefix:
Konfigurationsalternativ för Spring Kafka-konsumenter
- Prefix:
spring.kafka.consumer.properties.azure - Exempel:
spring.kafka.consumer.properties.azure.credential.*
- Prefix:
Konfigurationsalternativ för Spring Kafka-producent
- Prefix:
spring.kafka.producer.properties.azure - Exempel:
spring.kafka.producer.properties.azure.credential.*
- Prefix:
Konfigurationsalternativ för Spring Kafka-administratör
- Prefix:
spring.kafka.admin.properties.azure - Exempel:
spring.kafka.admin.properties.azure.credential.*
- Prefix:
Gemensam konfiguration för Spring Cloud Stream Kafka Binder
- Prefix:
spring.cloud.stream.kafka.binder.configuration.azure - Exempel:
spring.cloud.stream.kafka.binder.configuration.azure.credential.*
- Prefix:
Spring Cloud Stream Kafka Binder-konsumentkonfiguration
- Prefix:
spring.cloud.stream.kafka.binder.consumer-properties.azure - Exempel:
spring.cloud.stream.kafka.binder.consumer-properties.azure.credential.*
- Prefix:
Spring Cloud Stream Kafka Binder-producentkonfiguration
- Prefix:
spring.cloud.stream.kafka.binder.producer-properties.azure - Exempel:
spring.cloud.stream.kafka.binder.producer-properties.azure.credential.*
- Prefix:
Spring Cloud Stream Kafka Binder-administratörskonfiguration
- Prefix: Stöds inte, använd Vanlig Spring Boot Kafka-konfiguration eller administratörskonfiguration.
I följande tabell visas vanliga konfigurationsalternativ för Spring Boot Kafka:
| Namn | Beskrivning |
|---|---|
spring.kafka.properties.azure.credential.client-certificate-password |
Lösenord för certifikatfilen. |
spring.kafka.properties.azure.credential.client-certificate-path |
Sökväg till en PEM-certifikatfil som ska användas vid autentisering med ett tjänsthuvudnamn mot Azure. |
spring.kafka.properties.azure.credential.client-id |
Klient-ID som ska användas vid autentisering med tjänstens huvudnamn med Azure. Det här är en äldre egenskap. |
spring.kafka.properties.azure.credential.client-secret |
Klienthemlighet som ska användas för autentisering med service principal i Azure. Det här är en äldre egenskap. |
spring.kafka.properties.azure.credential.managed-identity-enabled |
Om du vill aktivera hanterad identitet för att autentisera med Azure. Om true och client-id anges är klient-ID:t det användartilldelade klient-ID:t för hanterad identitet. Standardvärdet är false. |
spring.kafka.properties.azure.credential.password |
Lösenord som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
spring.kafka.properties.azure.credential.username |
Användarnamn som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint |
Den Microsoft Entra-slutpunkt som ska anslutas till. |
spring.kafka.properties.azure.profile.tenant-id |
Klientorganisations-ID för Azure-resurser. De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. |
Obs!
Konfigurationsalternativen på olika nivåer tillämpar följande regler. De mer specifika konfigurationsalternativen har högre prioritet än de vanliga. Till exempel:
- Vanliga konfigurationsalternativ för Spring Kafka ersätter de globala alternativen.
- Spring Kafka-konsumentkonfigurationsalternativ ersätter de vanliga alternativen.
- Spring Kafka-producentkonfigurationsalternativ ersätter de vanliga alternativen.
- Spring Kafka-administratörskonfigurationsalternativ ersätter de vanliga alternativen.
- Spring Cloud Stream Kafka Binder-alternativen följer samma mönster.
Konfigurerbara egenskaper när du använder Kafka-stöd med autentisering med oformaterad anslutningssträng
I följande tabell visas vanliga konfigurationsalternativ för Spring Boot Event Hubs för Kafka:
| Egenskap | Beskrivning |
|---|---|
spring.cloud.azure.eventhubs.kafka.enabled |
Om du vill aktivera Azure Event Hubs Kafka-stöd. Standardvärdet är true. |
spring.cloud.azure.eventhubs.connection-string |
Anslutningssträng för Azure Event Hubs. Ange det här värdet när du vill ange anslutningssträngen direkt. |
spring.cloud.azure.eventhubs.namespace |
Azure Event Hubs-namnrymd. Ange det här värdet när du vill hämta anslutningsinformationen via Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group |
Resursgruppen för Azure Event Hubs-namnområdet. Ange det här värdet när du vill hämta anslutningsinformationen via Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id |
Prenumerations-ID. Ange det här värdet när du vill hämta anslutningsinformationen via Azure Resource Manager. |
Konfiguration av beroenden
Lägg till följande beroende i projektet. Det här beroendet inkluderar automatiskt beroendet spring-boot-starter i ditt projekt.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Obs!
Kom ihåg att lägga till BOM spring-cloud-azure-dependencies tillsammans med föregående beroende. Mer information finns i avsnittet Komma igång i utvecklarguiden Spring Cloud Azure.
Grundläggande användning
I följande avsnitt visas de klassiska Användningsscenarierna för Spring Boot-program.
Använda OAuth-autentisering
När du använder OAuth-autentiseringen som Spring Cloud Azure tillhandahåller för Kafka kan du konfigurera specifika autentiseringsuppgifter med hjälp av föregående konfigurationer. Du kan också välja att inte konfigurera några autentiseringsuppgifter. I det här fallet läser Spring Cloud Azure in autentiseringsuppgifterna från miljön. I det här avsnittet beskrivs hur du läser in autentiseringsuppgifter från Azure CLI-miljön eller Azure Spring Apps värdmiljön.
Obs!
Om du väljer att använda ett säkerhetsobjekt för att autentisera och auktorisera med Microsoft Entra ID för åtkomst till en Azure resurs kan du läsa avsnittet Auktorisera åtkomst med Microsoft Entra ID för att säkerställa att säkerhetsobjektet har tillräcklig behörighet för att komma åt Azure resursen.
I följande avsnitt beskrivs scenarier som använder olika Spring-ekosystembibliotek med OAuth-autentisering.
Stöd för Spring Kafka-program
I det här avsnittet beskrivs användningsscenariot för ett Spring Boot-program som använder Spring Kafka eller Spring Integration Kafka-biblioteket.
Konfiguration av beroenden
<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>
Konfigurationsuppdatering
Om du vill använda OAuth-autentisering anger du Event Hubs-slutpunkten enligt följande exempel:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Stöd för Spring Cloud Stream-binder för Kafka-applikationer
I det här avsnittet beskrivs användningsscenariot för Spring Boot-program som använder Spring Cloud Stream-binder Kafka-biblioteket.
Konfiguration av beroenden
<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>
Konfiguration
Om du vill använda OAuth-autentisering anger du Event Hubs-slutpunkten enligt följande exempel:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Obs!
Om du använder version 4.3.0anger du spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration egenskapen för att aktivera hela arbetsflödet för OAuth-autentisering.
kafka-binder-name är kafka som standard i ett program med en enda Kafka-binder. Konfigurationen AzureKafkaSpringCloudStreamConfiguration anger OAuth-säkerhetsparametrarna för KafkaBinderConfigurationProperties. Den här konfigurationen används i KafkaOAuth2AuthenticateCallbackHandler för att aktivera Azure identitet.
För versioner efter 4.4.0läggs den här egenskapen till automatiskt för varje Kafka-bindemedelsmiljö, så du behöver inte lägga till den manuellt.
Använda hanterad identitet för OAuth-autentisering
Om du vill använda hanterad identitet aktiverar du hanterad identitet för din tjänst och tilldelar rollerna
Azure Event Hubs Data ReceiverochAzure Event Hubs Data Sender. Mer information finns i Tilldela Azure-roller för åtkomsträttigheter.Konfigurera följande egenskaper i din application.yml-fil:
spring: cloud: azure: credential: managed-identity-enabled: trueViktig
Om du använder användartilldelad hanterad identitet lägger du även till egenskapen
spring.cloud.azure.credential.client-idmed ditt användartilldelade klient-ID för hanterad identitet.
Exempel
Se lagringsplatsen azure-spring-boot-samples på GitHub.
Använda autentisering med anslutningssträngar
Du kan använda anslutningssträngsautentisering direkt eller använda Azure Resource Manager för att hämta anslutningssträngen.
Obs!
Sedan version 5.0.0 behöver du fortfarande följande inställning när du använder autentisering med anslutningssträng i Spring Cloud Stream framework, för att säkerställa att anslutningssträngen fungerar. Värdet på <kafka-binder-name> bör vara kafka om du inte anpassar ditt Kafka-binder-namn: spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Om den version av spring-cloud-dependencies du använder är 2022.0.0får du undantaget java.lang.IllegalStateException: kafka_context has not been refreshed yet. Lös problemet genom att uppgradera till en högre version.
Konfiguration av beroenden
Lägg till följande beroenden om du vill migrera ditt Apache Kafka-program för att använda Azure Event Hubs för Kafka.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Om du vill hämta reťazec pripojenia med hjälp av Azure Resource Manager lägger du till följande beroende:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Konfiguration
Använd Event Hubs-anslutningssträngen direkt
Det enklaste sättet att ansluta till Event Hubs för Kafka är med anslutningssträngen. Lägg bara till följande egenskap.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Använda Azure Resource Manager för att hämta anslutningssträngen
Om du inte vill konfigurera anslutningssträngen i ditt program kan du använda Azure Resource Manager för att hämta anslutningssträngen. Om du vill autentisera med Azure Resource Manager kan du också använda autentiseringsuppgifter som lagras i Azure CLI eller något annat lokalt utvecklingsverktyg som Visual Studio Code eller Intellij IDEA. Alternativt kan du använda Hanterad identitet om ditt program distribueras till Azure Cloud. Se bara till att huvudnamnet har tillräcklig behörighet för att läsa resursmetadata.
Obs!
Om du väljer att använda ett säkerhetsobjekt för att autentisera och auktorisera med Microsoft Entra ID för åtkomst till en Azure resurs kan du läsa avsnittet Auktorisera åtkomst med Microsoft Entra ID för att säkerställa att säkerhetsobjektet har tillräcklig behörighet för att komma åt Azure resursen.
Om du vill använda Azure Resource Manager för att hämta anslutningssträngen lägger du bara till följande egenskap.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Exempel
Se lagringsplatsen azure-spring-boot-samples på GitHub.