Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Spring Cloud Azure Kafka-Unterstützung hilft Spring-Anwendungen bei der Authentifizierung und Verbindung mit Azure Event Hubs mithilfe von OAuth-Anmeldeinformationen oder Verbindungszeichenfolgen. In diesem Artikel werden die unterstützten Authentifizierungstypen, Konfigurationsoptionen, Abhängigkeiten und Verwendungsszenarien beschrieben.
Unterstützte Kafka-Version
Die aktuelle Version des Starters ist kompatibel mit Apache Kafka Clients 2.0.0 und verwendet Java 8 oder höher.
Unterstützte Authentifizierungstypen
Der Start unterstützt die folgenden Authentifizierungstypen:
- Einfache Verbindungszeichenfolgenauthentifizierung
- Direkte Verbindungszeichenfolgenauthentifizierung
- ARM-basierte Verbindungszeichenfolgenauthentifizierung
- Authentifizierung von OAuth-Anmeldeinformationen
- Verwaltete Identitätsauthentifizierung
- Benutzername/Kennwortauthentifizierung
- Dienstprinzipalauthentifizierung
-
DefaultAzureCredentialAuthentifizierung
Funktionsweise
Authentifizierung von OAuth-Anmeldeinformationen
In diesem Abschnitt wird der allgemeine Workflow der Spring Cloud OAuth-Authentifizierung beschrieben.
Spring Cloud Azure erstellt zunächst eine der folgenden Arten von Anmeldeinformationen, je nach Anwendungsauthentifizierungskonfiguration:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Wenn die Anwendung keinen dieser Arten von Anmeldeinformationen verwendet, verwendet die Anwendung die Anmeldeinformationskette DefaultAzureTokenCredential , um Anmeldeinformationen von Anwendungseigenschaften, Umgebungsvariablen, verwalteter Identität oder IDEs abzurufen. Ausführliche Informationen finden Sie unter Spring Cloud Azure authentication.
Einfache Verbindungszeichenfolgenauthentifizierung
Für den Authentifizierungsmodus der Verbindungszeichenfolge können Sie die Verbindungszeichenfolgenauthentifizierung direkt verwenden oder den Azure Resource Manager verwenden, um die Verbindungszeichenfolge abzurufen. Weitere Informationen zur Verwendung finden Sie im Abschnitt Grundlegende Verwendung für die Verbindungszeichenfolgenauthentifizierung Abschnitt.
Anmerkung
Seit Version 4.3.0 ist Verbindungszeichenfolge Authentifizierung zugunsten der OAuth-Authentifizierung veraltet.
Konfiguration
Konfigurierbare Eigenschaften bei Verwendung der Kafka-Unterstützung mit OAuth-Authentifizierung
Spring Cloud Azure für Kafka unterstützt die folgenden beiden Konfigurationsoptionen:
- Spring Cloud Azure für Event Hubs Kafka-Eigenschaften.
- Die globalen Authentifizierungskonfigurationsoptionen von
credentialundprofilemit Präfixen vonspring.cloud.azure. - Kafka-spezifische Levelkonfigurationen. Die Konfigurationen auf Kafka-Ebene sind auch für Spring Boot- und Spring Cloud Stream-Ordner für
common,consumer,produceroderadminBereiche verfügbar, die unterschiedliche Präfixe haben.
Die globalen Eigenschaften werden über com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesverfügbar gemacht. Die kafka-spezifischen Eigenschaften werden über org.springframework.boot.autoconfigure.kafka.KafkaProperties (Spring Boot) und org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties (Spring Cloud Stream Binder) verfügbar gemacht.
In der folgenden Liste sind alle unterstützten Konfigurationsoptionen aufgeführt.
Spring Cloud Azure für Event Hubs Kafka-Eigenschaften.
- Eigenschaft:
spring.cloud.azure.eventhubs.kafka.enabled - Beschreibung: Gibt an, ob die kostenlose Verbindung mit Anmeldeinformationen zu Azure Event Hubs für Kafka aktiviert werden soll, der Standardwert ist
true.
- Eigenschaft:
Die Konfigurationsoptionen für die globale Azure-Authentifizierung in Spring Cloud
- Präfix:
spring.cloud.azure - Unterstützte Optionen:
spring.cloud.azure.credential.*,spring.cloud.azure.profile.*
Eine vollständige Liste der globalen Konfigurationsoptionen finden Sie unter globalen Konfigurationseigenschaften.
- Präfix:
Allgemeine Konfiguration des Spring Boot Kafka
- Präfix:
spring.kafka.properties.azure - Beispiel:
spring.kafka.properties.azure.credential.*
- Präfix:
Konfigurationsoptionen für Spring Kafka-Consumer
- Präfix:
spring.kafka.consumer.properties.azure - Beispiel:
spring.kafka.consumer.properties.azure.credential.*
- Präfix:
Konfigurationsoptionen für Spring Kafka-Produzenten
- Präfix:
spring.kafka.producer.properties.azure - Beispiel:
spring.kafka.producer.properties.azure.credential.*
- Präfix:
Konfigurationsoptionen für Spring Kafka-Administratoren
- Präfix:
spring.kafka.admin.properties.azure - Beispiel:
spring.kafka.admin.properties.azure.credential.*
- Präfix:
Allgemeine Konfiguration von Spring Cloud Stream Kafka Binder
- Präfix:
spring.cloud.stream.kafka.binder.configuration.azure - Beispiel:
spring.cloud.stream.kafka.binder.configuration.azure.credential.*
- Präfix:
Spring Cloud Stream Kafka Binder Consumer Configuration
- Präfix:
spring.cloud.stream.kafka.binder.consumer-properties.azure - Beispiel:
spring.cloud.stream.kafka.binder.consumer-properties.azure.credential.*
- Präfix:
Feder Cloud Stream Kafka Binder Producer-Konfiguration
- Präfix:
spring.cloud.stream.kafka.binder.producer-properties.azure - Beispiel:
spring.cloud.stream.kafka.binder.producer-properties.azure.credential.*
- Präfix:
Feder Cloud Stream Kafka Binder-Administratorkonfiguration
- Präfix: Nicht unterstützt, verwenden Sie die allgemeine Spring Boot Kafka- oder Administratorkonfiguration.
Die folgende Tabelle zeigt die allgemeinen Konfigurationsoptionen für Spring Boot Kafka:
| Name | Beschreibung |
|---|---|
spring.kafka.properties.azure.credential.client-certificate-password |
Kennwort der Zertifikatdatei. |
spring.kafka.properties.azure.credential.client-certificate-path |
Pfad einer PEM-Zertifikatdatei, die beim Ausführen der Dienstprinzipalauthentifizierung mit Azure verwendet werden soll. |
spring.kafka.properties.azure.credential.client-id |
Client-ID, die beim Ausführen der Dienstprinzipalauthentifizierung mit Azure verwendet werden soll. Dies ist eine legacy-Eigenschaft. |
spring.kafka.properties.azure.credential.client-secret |
Geheimer Clientschlüssel, der beim Ausführen der Dienstprinzipalauthentifizierung mit Azure verwendet werden soll. Dies ist eine legacy-Eigenschaft. |
spring.kafka.properties.azure.credential.managed-identity-enabled |
Gibt an, ob verwaltete Identität für die Authentifizierung mit Azure aktiviert werden soll. Wenn true und die client-id Einstellung festgelegt ist, ist die Client-ID die vom Benutzer zugewiesene verwaltete Identitätsclient-ID. Der Standardwert ist false. |
spring.kafka.properties.azure.credential.password |
Kennwort, das bei der Authentifizierung mit Benutzername/Kennwort mit Azure verwendet werden soll. |
spring.kafka.properties.azure.credential.username |
Benutzername, der bei der Authentifizierung mit Benutzername/Kennwort mit Azure verwendet werden soll. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint |
Der Microsoft Entra-Endpunkt, mit dem eine Verbindung hergestellt werden soll. |
spring.kafka.properties.azure.profile.tenant-id |
Mandanten-ID für Azure-Ressourcen. Die für tenant-id zulässigen Werte sind: common, organizations, consumersoder die Mandanten-ID. |
Anmerkung
Die Konfigurationsoptionen in verschiedenen Ebenen gelten für die folgenden Regeln. Die spezifischeren Konfigurationsoptionen haben eine höhere Priorität als die gängigen. Zum Beispiel:
- Die allgemeinen Konfigurationsoptionen von Spring Kafka ersetzen die globalen Optionen.
- Spring Kafka Consumer-Konfigurationsoptionen ersetzen die allgemeinen Optionen.
- Die Konfigurationsoptionen des Spring Kafka-Herstellers ersetzen die allgemeinen Optionen.
- Die Konfigurationsoptionen für Spring Kafka-Administratoren ersetzen die allgemeinen Optionen.
- Die Spring Cloud Stream Kafka Binder-Optionen folgen demselben Muster.
Konfigurierbare Eigenschaften bei Verwendung der Kafka-Unterstützung mit einfacher Verbindungszeichenfolgenauthentifizierung
In der folgenden Tabelle sind die allgemeinen Konfigurationsoptionen für Kafka für Spring Boot Event Hubs aufgeführt:
| Eigentum | Beschreibung |
|---|---|
spring.cloud.azure.eventhubs.kafka.enabled |
Gibt an, ob die Unterstützung von Azure Event Hubs Kafka aktiviert werden soll. Der Standardwert ist true. |
spring.cloud.azure.eventhubs.connection-string |
Verbindungszeichenfolge für Azure Event Hubs. Geben Sie diesen Wert an, wenn Sie die Verbindungszeichenfolge direkt bereitstellen möchten. |
spring.cloud.azure.eventhubs.namespace |
Azure Event Hubs-Namespace. Geben Sie diesen Wert an, wenn Sie die Verbindungsinformationen über Azure Resource Manager abrufen möchten. |
spring.cloud.azure.eventhubs.resource.resource-group |
Die Ressourcengruppe des Azure Event Hubs-Namespace. Geben Sie diesen Wert an, wenn Sie die Verbindungsinformationen über Azure Resource Manager abrufen möchten. |
spring.cloud.azure.profile.subscription-id |
Die Abonnement-ID. Geben Sie diesen Wert an, wenn Sie die Verbindungsinformationen über Azure Resource Manager abrufen möchten. |
Setup von Abhängigkeiten
Fügen Sie dem Projekt die folgende Abhängigkeit hinzu. Diese Abhängigkeit schließt automatisch die spring-boot-starter Abhängigkeit in Ihr Projekt ein.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Anmerkung
Denken Sie daran, die BOM spring-cloud-azure-dependencies zusammen mit der vorherigen Abhängigkeit hinzuzufügen. Ausführliche Informationen finden Sie im Abschnitt "Erste Schritte" des Spring Cloud Azure-Entwicklerhandbuchs.
Grundlegende Nutzung
Die folgenden Abschnitte zeigen die klassischen Anwendungsverwendungsszenarien für Spring Boot.
Verwenden der OAuth-Authentifizierung
Wenn Sie die OAuth-Authentifizierung verwenden, die Spring Cloud Azure für Kafka bereitstellt, können Sie bestimmte Anmeldeinformationen mithilfe der vorherigen Konfigurationen konfigurieren. Alternativ können Sie auswählen, dass keine Anmeldeinformationen konfiguriert werden sollen. In diesem Fall lädt Spring Cloud Azure die Anmeldeinformationen aus der Umgebung. In diesem Abschnitt wird beschrieben, wie Anmeldeinformationen aus der Azure CLI-Umgebung oder der Azure Spring Apps-Hostingumgebung geladen werden.
Anmerkung
Wenn Sie sich für den Zugriff auf eine Azure Ressource mit einem Sicherheitsprinzipal authentifizieren und Microsoft Entra ID autorisieren möchten, lesen Sie den Abschnitt "Autorisieren des Zugriffs mit Microsoft Entra ID", um sicherzustellen, dass der Sicherheitsprinzipal über ausreichende Berechtigungen für den Zugriff auf die Azure Ressource verfügt.
Im folgenden Abschnitt werden Szenarien beschrieben, in denen verschiedene Spring-Ökosystembibliotheken mit OAuth-Authentifizierung verwendet werden.
Unterstützung der Spring Kafka-Anwendung
In diesem Abschnitt wird das Verwendungsszenario für eine Spring Boot-Anwendung beschrieben, die Spring Kafka oder die Spring Integration Kafka-Bibliothek verwendet.
Setup von Abhängigkeiten
<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>
Konfigurationsupdate
Um die OAuth-Authentifizierung zu verwenden, geben Sie den Event Hubs-Endpunkt an, wie im folgenden Beispiel gezeigt:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Unterstützung der Feder Cloud Stream-Ordner-Kafka-Anwendung
In diesem Abschnitt wird das Verwendungsszenario für Spring Boot-Anwendungen beschrieben, die die Feder Cloud Stream-Ordner-Kafka-Bibliothek verwenden.
Setup von Abhängigkeiten
<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
Um die OAuth-Authentifizierung zu verwenden, geben Sie den Event Hubs-Endpunkt an, wie im folgenden Beispiel gezeigt:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Anmerkung
Wenn Sie version 4.3.0verwenden, legen Sie die spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration Eigenschaft so fest, dass der gesamte OAuth-Authentifizierungsworkflow aktiviert wird. Dies kafka-binder-name ist kafka standardmäßig in einer einzelnen Kafka-Sammelmappenanwendung. Die Konfiguration AzureKafkaSpringCloudStreamConfiguration gibt die OAuth-Sicherheitsparameter für KafkaBinderConfigurationProperties. Diese Konfiguration wird verwendetKafkaOAuth2AuthenticateCallbackHandler, um Azure Identity zu aktivieren.
Für Versionen nach 4.4.0, diese Eigenschaft wird automatisch für jede Kafka-Sammelmappenumgebung hinzugefügt, sodass Sie sie nicht manuell hinzufügen müssen.
Verwenden der verwalteten Identität für die OAuth-Authentifizierung
Um verwaltete Identität zu verwenden, aktivieren Sie verwaltete Identität für Ihren Dienst, und weisen Sie die
Azure Event Hubs Data Receiverrollen zuAzure Event Hubs Data Sender. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen für Zugriffsberechtigungen.Konfigurieren Sie die folgenden Eigenschaften in Ihrer application.yml Datei:
spring: cloud: azure: credential: managed-identity-enabled: trueWichtig
Wenn Sie die vom Benutzer zugewiesene verwaltete Identität verwenden, fügen Sie die Eigenschaft
spring.cloud.azure.credential.client-idauch mit Ihrer vom Benutzer zugewiesenen Client-ID für verwaltete Identität hinzu.
Proben
Sehen Sie sich das azure-spring-boot-samples Repository auf GitHub an.
Verwenden der Verbindungszeichenfolgenauthentifizierung
Sie können die Verbindungszeichenfolgenauthentifizierung direkt verwenden oder den Azure Resource Manager verwenden, um die Verbindungszeichenfolge abzurufen.
Anmerkung
Da Version 5.0.0 bei Verwendung Verbindungszeichenfolge Authentifizierung mit Spring Cloud Stream Framework weiterhin die folgende Eigenschaft benötigt, um sicherzustellen, dass die Verbindungszeichenfolge funktioniert. Der Wert <kafka-binder-name> sollte sein kafka , wenn Sie ihren Kafka-Ordnernamen nicht anpassen: spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Wenn die verwendete spring-cloud-dependencies Version lautet, tritt 2022.0.0die Ausnahme java.lang.IllegalStateException: kafka_context has not been refreshed yetauf. Um dieses Problem zu beheben, führen Sie ein Upgrade auf eine höhere Version durch.
Setup von Abhängigkeiten
Fügen Sie die folgenden Abhängigkeiten hinzu, wenn Sie Ihre Apache Kafka-Anwendung migrieren möchten, um Azure Event Hubs für Kafka zu verwenden.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Wenn Sie die Verbindungszeichenfolge mithilfe von Azure Resource Manager abrufen möchten, fügen Sie die folgende Abhängigkeit hinzu:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Konfiguration
Verwenden der Event Hubs-Verbindungszeichenfolge direkt
Die einfachste Möglichkeit zum Herstellen einer Verbindung mit Event Hubs für Kafka ist die Verbindungszeichenfolge. Fügen Sie einfach die folgende Eigenschaft hinzu.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Verwenden von Azure Resource Manager zum Abrufen der Verbindungszeichenfolge
Wenn Sie die Verbindungszeichenfolge in Ihrer Anwendung nicht konfigurieren möchten, können Sie azure Resource Manager verwenden, um die Verbindungszeichenfolge abzurufen. Um sich bei Azure Resource Manager zu authentifizieren, können Sie auch Anmeldeinformationen verwenden, die in Azure CLI oder einem anderen lokalen Entwicklungstool wie Visual Studio Code oder Intellij IDEA gespeichert sind. Alternativ können Sie verwaltete Identität verwenden, wenn Ihre Anwendung in Azure Cloud bereitgestellt wird. Stellen Sie einfach sicher, dass der Prinzipal über ausreichende Berechtigungen zum Lesen von Ressourcenmetadaten verfügt.
Anmerkung
Wenn Sie sich für den Zugriff auf eine Azure Ressource mit einem Sicherheitsprinzipal authentifizieren und Microsoft Entra ID autorisieren möchten, lesen Sie den Abschnitt "Autorisieren des Zugriffs mit Microsoft Entra ID", um sicherzustellen, dass der Sicherheitsprinzipal über ausreichende Berechtigungen für den Zugriff auf die Azure Ressource verfügt.
Um azure Resource Manager zum Abrufen der Verbindungszeichenfolge zu verwenden, fügen Sie einfach die folgende Eigenschaft hinzu.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Proben
Sehen Sie sich das azure-spring-boot-samples Repository auf GitHub an.