Prise en charge d’Azure Kafka Azure Spring Cloud
Cet article s’applique à : ✔️ Version 4.14.0 ✔️ Version 5.8.0
À partir de la version 4.3.0, Spring Cloud Azure pour Kafka prend en charge différents types d’informations d’identification pour authentifier et se connecter à Azure Event Hubs.
Version de Kafka prise en charge
La version actuelle du starter doit être compatible avec Apache Kafka Clients 2.0.0 à l’aide de Java 8 ou version ultérieure.
Types d’authentification pris en charge
Les types d’authentification suivants sont pris en charge :
- Authentification chaîne de connexion simple
- Authentification directe chaîne de connexion
- Authentification chaîne de connexion basée sur ARM
- Authentification des informations d’identification OAuth
- Authentification d’une identité managée
- Authentification par nom d’utilisateur/mot de passe
- Authentification d’un principal du service
- l’authentification
DefaultAzureCredential
Fonctionnement
Authentification des informations d’identification OAuth
Cette section décrit le flux de travail global de l’authentification OAuth Spring Cloud Azure.
Spring Cloud Azure crée d’abord l’un des types d’informations d’identification suivants en fonction de la configuration de l’authentification de l’application :
ClientSecretCredential
ClientCertificateCredential
UsernamePasswordCredential
ManagedIdentityCredential
Si aucun de ces types d’informations d’identification n’est trouvé, la chaîne d’informations d’identification est DefaultAzureTokenCredential
utilisée pour obtenir des informations d’identification à partir des propriétés de l’application, des variables d’environnement, de l’identité managée ou des IDE. Pour plus d’informations, consultez l’authentification Spring Cloud Azure.
Authentification chaîne de connexion simple
Pour le mode d’authentification chaîne de connexion, vous pouvez utiliser l’authentification chaîne de connexion directement ou utiliser Azure Resource Manager pour récupérer le chaîne de connexion. Pour plus d’informations sur l’utilisation, consultez la section Utilisation de base pour chaîne de connexion l’authentification.
Remarque
Depuis la version 4.3.0, chaîne de connexion l’authentification est déconseillée en faveur des authentifications OAuth.
Configuration
Propriétés configurables lors de l’utilisation de la prise en charge de Kafka avec l’authentification OAuth
Spring Cloud Azure pour Kafka prend en charge les deux niveaux suivants d’options de configuration :
- Propriétés Spring Cloud Azure pour Event Hubs Kafka.
- Options de configuration d’authentification globale des
credential
profile
préfixesspring.cloud.azure
. - Configurations de niveau spécifiques à Kafka. Les configurations kafka sont également disponibles pour les classeurs Spring Boot et Spring Cloud Stream pour
common
,consumer
,producer
ouadmin
étendues, qui ont des préfixes différents.
Les propriétés globales sont exposées via com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties
. Les propriétés propres à Kafka sont exposées via org.springframework.boot.autoconfigure.kafka.KafkaProperties
(Spring Boot) et org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties
(classeur Spring Cloud Stream).
La liste suivante montre toutes les options de configuration prises en charge.
Propriétés Spring Cloud Azure pour Event Hubs Kafka.
- Propriété:
spring.cloud.azure.eventhubs.kafka.enabled
- Description : indique s’il faut activer la connexion gratuite des informations d’identification à Azure Event Hubs pour Kafka, la valeur par défaut est
true
.
- Propriété:
Options de configuration de l’authentification globale Spring Cloud Azure
- Préfixe :
spring.cloud.azure
- Options prises en charge :
spring.cloud.azure.credential.*
,spring.cloud.azure.profile.*
Pour obtenir la liste complète des options de configuration globale, consultez les propriétés de configuration globale.
- Préfixe :
Configuration courante spring Boot Kafka
- Préfixe :
spring.kafka.properties.azure
- Exemple :
spring.kafka.properties.azure
.credential.*
- Préfixe :
Options de configuration du consommateur Spring Kafka
- Préfixe :
spring.kafka.consumer.properties.azure
- Exemple :
spring.kafka.consumer.properties.azure
.credential.*
- Préfixe :
Options de configuration du producteur Spring Kafka
- Préfixe :
spring.kafka.producer.properties.azure
- Exemple :
spring.kafka.producer.properties.azure
.credential.*
- Préfixe :
Options de configuration de l’administrateur Spring Kafka
- Préfixe :
spring.kafka.admin.properties.azure
- Exemple :
spring.kafka.admin.properties.azure
.credential.*
- Préfixe :
Configuration courante de Spring Cloud Stream Kafka Binder
- Préfixe :
spring.cloud.stream.kafka.binder.configuration.azure
- Exemple :
spring.cloud.stream.kafka.binder.configuration.azure
.credential.*
- Préfixe :
Configuration du consommateur Spring Cloud Stream Kafka Binder
- Préfixe :
spring.cloud.stream.kafka.binder.consumer-properties.azure
- Exemple :
spring.cloud.stream.kafka.binder.consumer-properties.azure
.credential.*
- Préfixe :
Configuration du producteur Spring Cloud Stream Kafka Binder
- Préfixe :
spring.cloud.stream.kafka.binder.producer-properties.azure
- Exemple :
spring.cloud.stream.kafka.binder.producer-properties.azure
.credential.*
- Préfixe :
Configuration de l’administrateur Spring Cloud Stream Kafka Binder
- Préfixe : Non pris en charge, doit utiliser la configuration commune ou administrateur spring Boot Kafka.
Le tableau suivant présente les options de configuration courantes de Spring Boot Kafka :
Nom | Description |
---|---|
spring.kafka.properties.azure.credential.client-certificate-password | Mot de passe du fichier de certificat. |
spring.kafka.properties.azure.credential.client-certificate-path | Chemin d’un fichier de certificat PEM à utiliser lors de l’authentification du principal de service avec Azure. |
spring.kafka.properties.azure.credential.client-id | ID client à utiliser lors de l’authentification du principal de service avec Azure. Il s’agit d’une propriété héritée. |
spring.kafka.properties.azure.credential.client-secret | Clé secrète client à utiliser lors de l’authentification du principal de service avec Azure. Il s’agit d’une propriété héritée. |
spring.kafka.properties.azure.credential.managed-identity-enabled | Indique s’il faut activer l’identité managée pour s’authentifier auprès d’Azure. Si la valeur est true et que la client-id valeur est définie, utilisez l’ID client en tant qu’ID client d’identité managée affecté par l’utilisateur. La valeur par défaut est false (Faux). |
spring.kafka.properties.azure.credential.password | Mot de passe à utiliser lors de l’exécution de l’authentification par nom d’utilisateur/mot de passe avec Azure. |
spring.kafka.properties.azure.credential.username | Nom d’utilisateur à utiliser lors de l’exécution de l’authentification par nom d’utilisateur/mot de passe avec Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint | Point de terminaison Microsoft Entra auquel se connecter. |
spring.kafka.properties.azure.profile.tenant-id | ID de locataire pour les ressources Azure. Les valeurs autorisées tenant-id sont : common , organizations , consumers ou l’ID de locataire. |
Remarque
Les options de configuration de différents niveaux appliquent les règles suivantes. Les options de configuration plus spécifiques ont une priorité plus élevée que les options courantes. Par exemple :
- Les options de configuration courantes spring Kafka remplacent les options globales.
- Les options de configuration du consommateur Spring Kafka remplacent les options courantes.
- Les options de configuration du producteur Spring Kafka remplacent les options courantes.
- Les options de configuration de l’administrateur Spring Kafka remplacent les options courantes.
- Les options Spring Cloud Stream Kafka Binder sont tout comme celles ci-dessus.
Propriétés configurables lors de l’utilisation de la prise en charge de Kafka avec l’authentification simple chaîne de connexion
Le tableau suivant présente les hubs d’événements Spring Boot pour les options de configuration courantes de Kafka :
Propriété | Description |
---|---|
spring.cloud.azure.eventhubs.kafka.enabled | Indique s’il faut activer la prise en charge d’Azure Event Hubs Kafka. La valeur par défaut est true. |
spring.cloud.azure.eventhubs.connection-string | Azure Event Hubs chaîne de connexion. Fournissez cette valeur lorsque vous souhaitez fournir la chaîne de connexion directement. |
spring.cloud.azure.eventhubs.namespace | Espace de noms Azure Event Hubs. Indiquez cette valeur lorsque vous souhaitez récupérer les informations de connexion via Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group | Groupe de ressources de l’espace de noms Azure Event Hubs. Indiquez cette valeur lorsque vous souhaitez récupérer les informations de connexion via Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id | L'ID de l'abonnement. Indiquez cette valeur lorsque vous souhaitez récupérer les informations de connexion via Azure Resource Manager. |
Configuration des dépendances
Ajoutez la dépendance suivante à votre projet. Cela inclut automatiquement la spring-boot-starter
dépendance dans votre projet transitivement.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Remarque
N’oubliez pas d’ajouter le boM spring-cloud-azure-dependencies
avec la dépendance ci-dessus. Pour plus d’informations, consultez la section Prise en main du guide du développeur Spring Cloud Azure.
Utilisation de base
Les sections suivantes montrent les scénarios d’utilisation classiques de l’application Spring Boot.
Utiliser l’authentification OAuth
Lorsque vous utilisez l’authentification OAuth fournie par Spring Cloud Azure pour Kafka, vous pouvez configurer les informations d’identification spécifiques à l’aide des configurations ci-dessus. Vous pouvez également choisir de configurer des informations d’identification, auquel cas Spring Cloud Azure charge les informations d’identification à partir de l’environnement. Cette section décrit les utilisations qui chargent les informations d’identification à partir de l’environnement Azure CLI ou de l’environnement d’hébergement Azure Spring Apps.
Remarque
Si vous choisissez d’utiliser un principal de sécurité pour authentifier et autoriser avec Microsoft Entra ID pour accéder à une ressource Azure, consultez la section Autoriser l’accès avec l’ID Microsoft Entra pour vous assurer que le principal de sécurité a reçu l’autorisation suffisante pour accéder à la ressource Azure.
La section suivante décrit les scénarios utilisant différentes bibliothèques d’écosystèmes Spring avec l’authentification OAuth.
Prise en charge des applications Spring Kafka
Cette section décrit le scénario d’utilisation de l’application Spring Boot à l’aide de la bibliothèque Spring Kafka ou Spring Integration Kafka.
Configuration des dépendances
<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>
Mise à jour de la configuration
Pour utiliser l’authentification OAuth, spécifiez simplement le point de terminaison Event Hubs, comme illustré dans l’exemple suivant :
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Prise en charge de l’application Kafka du classeur Spring Cloud Stream
Cette section décrit le scénario d’utilisation pour les applications Spring Boot à l’aide de la bibliothèque Kafka du classeur Spring Cloud Stream.
Configuration des dépendances
<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>
Configuration
Pour utiliser l’authentification OAuth, spécifiez simplement le point de terminaison Event Hubs, comme indiqué dans l’exemple suivant :
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Remarque
Si vous utilisez la version 4.3.0
, n’oubliez pas de définir la spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
propriété pour activer l’ensemble du flux de travail d’authentification OAuth, où kafka-binder-name
se trouve kafka
par défaut dans une application de classeur Kafka unique. La configuration AzureKafkaSpringCloudStreamConfiguration
spécifie les paramètres de sécurité OAuth pour KafkaBinderConfigurationProperties
, qui sont utilisés pour KafkaOAuth2AuthenticateCallbackHandler
activer Azure Identity.
Pour la version après 4.4.0
, cette propriété est ajoutée automatiquement pour chaque environnement de classeur Kafka. Vous n’avez donc pas besoin de l’ajouter manuellement.
Exemples
Consultez le référentiel azure-spring-boot-samples sur GitHub.
Utiliser l’authentification chaîne de connexion
Vous pouvez utiliser l’authentification chaîne de connexion directement ou utiliser Azure Resource Manager pour récupérer le chaîne de connexion.
Remarque
Depuis la version 4.3.0, chaîne de connexion l’authentification est déconseillée en faveur des authentifications OAuth.
Depuis la version 4.5.0, lors de l’utilisation de l’authentification chaîne de connexion avec Spring Cloud Stream Framework, la propriété suivante est requise pour vous assurer que l’chaîne de connexion peut prendre effet, où la valeur <kafka-binder-name>
doit être kafka
lorsqu’il n’existe aucune configuration personnalisée pour votre nom de classeur Kafka.
spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Configuration des dépendances
Ajoutez les dépendances suivantes si vous souhaitez migrer votre application Apache Kafka pour utiliser Azure Event Hubs pour Kafka.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Si vous souhaitez récupérer le chaîne de connexion à l’aide d’Azure Resource Manager, ajoutez la dépendance suivante :
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Configuration
Utiliser les chaîne de connexion Event Hubs directement
La façon la plus simple de se connecter à Event Hubs pour Kafka est avec la chaîne de connexion. Ajoutez simplement la propriété suivante.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Utiliser Azure Resource Manager pour récupérer chaîne de connexion
Si vous ne souhaitez pas configurer la chaîne de connexion dans votre application, vous pouvez utiliser Azure Resource Manager pour récupérer le chaîne de connexion. Pour vous authentifier auprès d’Azure Resource Manager, vous pouvez également utiliser des informations d’identification stockées dans Azure CLI ou un autre outil de développement local tel que Visual Studio Code ou Intellij IDEA. Vous pouvez également utiliser Managed Identity si votre application est déployée sur Azure Cloud. Assurez-vous que le principal dispose d’une autorisation suffisante pour lire les métadonnées de ressource.
Remarque
Si vous choisissez d’utiliser un principal de sécurité pour authentifier et autoriser avec Microsoft Entra ID pour accéder à une ressource Azure, consultez la section Autoriser l’accès avec l’ID Microsoft Entra pour vous assurer que le principal de sécurité a reçu l’autorisation suffisante pour accéder à la ressource Azure.
Pour utiliser Azure Resource Manager pour récupérer le chaîne de connexion, ajoutez simplement la propriété suivante.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Exemples
Consultez le référentiel azure-spring-boot-samples sur GitHub.