Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Ondersteuning voor Spring Cloud Azure Kafka helpt Spring-toepassingen bij het verifiëren en maken van verbinding met Azure Event Hubs met behulp van OAuth-referenties of verbindingsreeksen. In dit artikel worden de ondersteunde verificatietypen, configuratieopties, afhankelijkheden en gebruiksscenario's beschreven.
Ondersteunde Kafka-versie
De huidige versie van de starter is compatibel met Apache Kafka-clients 2.0.0 en gebruikt Java 8 of hoger.
Ondersteunde verificatietypen
De starter ondersteunt de volgende verificatietypen:
- Authenticatie met een gewone verbindingsreeks
- Directe verificatie van verbindingsreeksen
- Verificatie met een ARM-gebaseerde verbindingsreeks
- Verificatie van OAuth-referenties
- Verificatie van beheerde identiteit
- Verificatie van gebruikersnaam/wachtwoord
- Authenticatie van service-principals
-
DefaultAzureCredentialverificatie
Hoe het werkt
Verificatie van OAuth-referenties
In deze sectie wordt de algehele werkstroom van Spring Cloud Azure OAuth-verificatie beschreven.
Spring Cloud Azure bouwt eerst een van de volgende typen referenties, afhankelijk van de configuratie van de toepassingsverificatie:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Als de toepassing geen van deze typen referenties gebruikt, gebruikt de toepassing de referentieketen DefaultAzureTokenCredential om referenties op te halen uit toepassingseigenschappen, omgevingsvariabelen, beheerde identiteit of IDE's. Zie Spring Cloud Azure-verificatievoor gedetailleerde informatie.
Authenticatie met een gewone verbindingsreeks
Voor de verificatiemodus voor verbindingsreeksen kunt u verificatie van verbindingsreeksen rechtstreeks gebruiken of Azure Resource Manager gebruiken om de verbindingsreeks op te halen. Zie de sectie Basisgebruik voor verificatie van verbindingsreeksen voor meer informatie over het gebruik.
Notitie
Sinds versie 4.3.0 wordt verbindingsreeks verificatie afgeschaft ten gunste van OAuth-verificatie.
Configuratie
Configureerbare eigenschappen bij het gebruik van Kafka-ondersteuning met OAuth-verificatie
Spring Cloud Azure voor Kafka ondersteunt de volgende twee configuratieopties:
- Eigenschappen van Spring Cloud Azure voor Event Hubs Kafka.
- De algemene configuratieopties voor verificatie van
credentialenprofilemet voorvoegsels vanspring.cloud.azure. - Kafka-specifieke configuraties. De configuraties op Kafka-niveau zijn ook beschikbaar voor Spring Boot- en Spring Cloud Stream-binders voor de scopes
common,consumer,producerofadmin, die verschillende voorvoegsels hebben.
De globale eigenschappen worden weergegeven via com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties. De kafka-specifieke eigenschappen worden weergegeven via org.springframework.boot.autoconfigure.kafka.KafkaProperties (Spring Boot) en org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties (Spring Cloud Stream-binder).
De volgende lijst bevat alle ondersteunde configuratieopties.
Eigenschappen van Spring Cloud Azure voor Event Hubs Kafka.
- Eigenschap:
spring.cloud.azure.eventhubs.kafka.enabled - Beschrijving: of u een gratis referentieverbinding met Azure Event Hubs voor Kafka wilt inschakelen, de standaardwaarde is
true.
- Eigenschap:
De configuratieopties voor globale verificatie van Spring Cloud Azure
- Voorvoegsel:
spring.cloud.azure - Ondersteunde opties:
spring.cloud.azure.credential.*,spring.cloud.azure.profile.*
Zie algemene configuratie-eigenschappenvoor de volledige lijst met algemene configuratieopties.
- Voorvoegsel:
Algemene configuratie van Spring Boot Kafka
- Voorvoegsel:
spring.kafka.properties.azure - Voorbeeld:
spring.kafka.properties.azure.credential.*
- Voorvoegsel:
Configuratieopties voor Spring Kafka-consumenten
- Voorvoegsel:
spring.kafka.consumer.properties.azure - Voorbeeld:
spring.kafka.consumer.properties.azure.credential.*
- Voorvoegsel:
Configuratieopties voor Spring Kafka-producenten
- Voorvoegsel:
spring.kafka.producer.properties.azure - Voorbeeld:
spring.kafka.producer.properties.azure.credential.*
- Voorvoegsel:
Configuratieopties voor Spring Kafka-beheerders
- Voorvoegsel:
spring.kafka.admin.properties.azure - Voorbeeld:
spring.kafka.admin.properties.azure.credential.*
- Voorvoegsel:
Algemene configuratie van Spring Cloud Stream Kafka Binder
- Voorvoegsel:
spring.cloud.stream.kafka.binder.configuration.azure - Voorbeeld:
spring.cloud.stream.kafka.binder.configuration.azure.credential.*
- Voorvoegsel:
Spring Cloud Stream Kafka Binder-consumentenconfiguratie
- Voorvoegsel:
spring.cloud.stream.kafka.binder.consumer-properties.azure - Voorbeeld:
spring.cloud.stream.kafka.binder.consumer-properties.azure.credential.*
- Voorvoegsel:
Producentconfiguratie van Spring Cloud Stream Kafka Binder
- Voorvoegsel:
spring.cloud.stream.kafka.binder.producer-properties.azure - Voorbeeld:
spring.cloud.stream.kafka.binder.producer-properties.azure.credential.*
- Voorvoegsel:
Adminconfiguratie van Spring Cloud Stream Kafka Binder
- Voorvoegsel: Niet ondersteund, gebruik algemene configuratie of beheerconfiguratie van Spring Boot Kafka.
In de volgende tabel ziet u de algemene configuratieopties voor Spring Boot Kafka:
| Naam | Beschrijving |
|---|---|
spring.kafka.properties.azure.credential.client-certificate-password |
Wachtwoord van het certificaatbestand. |
spring.kafka.properties.azure.credential.client-certificate-path |
Pad van een PEM-certificaatbestand dat moet worden gebruikt bij het uitvoeren van service-principalverificatie met Azure. |
spring.kafka.properties.azure.credential.client-id |
Client-id die moet worden gebruikt bij het uitvoeren van service-principalverificatie met Azure. Dit is een verouderde property. |
spring.kafka.properties.azure.credential.client-secret |
Clientgeheim dat moet worden gebruikt bij het uitvoeren van service-principal-verificatie met Azure. Dit is een verouderde eigenschap. |
spring.kafka.properties.azure.credential.managed-identity-enabled |
Of beheerde identiteit moet worden ingeschakeld voor verificatie bij Azure. Als true en de client-id is ingesteld, is de client-id de client-id van de door de gebruiker toegewezen beheerde identiteit. De standaardwaarde is false. |
spring.kafka.properties.azure.credential.password |
Wachtwoord dat moet worden gebruikt bij het uitvoeren van verificatie van gebruikersnaam en wachtwoord met Azure. |
spring.kafka.properties.azure.credential.username |
Gebruikersnaam die moet worden gebruikt bij het uitvoeren van verificatie met gebruikersnaam en wachtwoord met Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint |
Het Microsoft Entra-eindpunt waarmee verbinding moet worden gemaakt. |
spring.kafka.properties.azure.profile.tenant-id |
Tenant-id voor Azure-resources. De waarden die zijn toegestaan voor tenant-id zijn: common, organizations, consumersof de tenant-id. |
Notitie
De configuratieopties op verschillende niveaus hanteren de volgende regels. De meer specifieke configuratieopties hebben een hogere prioriteit dan de algemene opties. Bijvoorbeeld:
- Algemene configuratieopties van Spring Kafka vervangen de algemene opties.
- Spring Kafka-configuratieopties vervangen de algemene opties.
- Spring Kafka-configuratieopties vervangen de algemene opties.
- Configuratieopties voor Spring Kafka-beheerders vervangen de algemene opties.
- De Opties voor Spring Cloud Stream Kafka Binder volgen hetzelfde patroon.
Configureerbare eigenschappen bij gebruik van Kafka-ondersteuning met authenticatie via een eenvoudige verbindingsreeks
In de volgende tabel ziet u de algemene configuratieopties voor Spring Boot Event Hubs voor Kafka:
| Eigenschap | Beschrijving |
|---|---|
spring.cloud.azure.eventhubs.kafka.enabled |
Of u ondersteuning voor Azure Event Hubs Kafka wilt inschakelen. De standaardwaarde is true. |
spring.cloud.azure.eventhubs.connection-string |
Azure Event Hubs-verbindingsreeks. Geef deze waarde op wanneer u de verbindingsreeks rechtstreeks wilt opgeven. |
spring.cloud.azure.eventhubs.namespace |
Azure Event Hubs-naamruimte. Geef deze waarde op wanneer u de verbindingsgegevens wilt ophalen via Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group |
De resourcegroep van de Azure Event Hubs-naamruimte. Geef deze waarde op wanneer u de verbindingsgegevens wilt ophalen via Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id |
De id van het abonnement. Geef deze waarde op wanneer u de verbindingsgegevens wilt ophalen via Azure Resource Manager. |
Afhankelijkheid instellen
Voeg de volgende afhankelijkheid toe aan uw project. Deze afhankelijkheid bevat automatisch de spring-boot-starter afhankelijkheid in uw project.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Notitie
Vergeet niet om naast de bovenstaande afhankelijkheid ook de BOM spring-cloud-azure-dependencies toe te voegen. Zie de sectie Aan de slag van de Spring Cloud Azure-ontwikkelaarshandleidingvoor meer informatie.
Basisgebruik
In de volgende secties ziet u de klassieke gebruiksscenario's voor Spring Boot-toepassingen.
OAuth-verificatie gebruiken
Wanneer u de OAuth-verificatie gebruikt die door Spring Cloud Azure voor Kafka wordt geboden, kunt u specifieke referenties configureren met behulp van de voorgaande configuraties. U kunt er ook voor kiezen om geen inloggegevens te configureren. In dit geval laadt Spring Cloud Azure de inloggegevens vanuit de omgeving. In deze sectie wordt beschreven hoe u referenties laadt vanuit de Azure CLI-omgeving of de Azure Spring Apps hostingomgeving.
Notitie
Als u ervoor kiest om een beveiligingsprincipaal te gebruiken om te verifiëren en autoriseren met Microsoft Entra ID voor toegang tot een Azure resource, raadpleegt u de sectie Toegang autoriseren met Microsoft Entra ID om ervoor te zorgen dat de beveiligingsprincipaal voldoende machtigingen heeft voor toegang tot de Azure resource.
In de volgende sectie worden scenario's beschreven die gebruikmaken van verschillende Spring-ecosysteembibliotheken met OAuth-verificatie.
Ondersteuning voor Spring Kafka-toepassingen
In deze sectie wordt het gebruiksscenario beschreven voor een Spring Boot-toepassing die gebruikmaakt van Spring Kafka of de Spring Integration Kafka-bibliotheek.
Afhankelijkheid instellen
<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>
Update van de configuratie
Als u OAuth-verificatie wilt gebruiken, geeft u het Event Hubs-eindpunt op, zoals wordt weergegeven in het volgende voorbeeld:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Ondersteuning voor Kafka-toepassing voor Spring Cloud Stream-binder
In deze sectie wordt het gebruiksscenario beschreven voor Spring Boot-toepassingen die gebruikmaken van de Kafka-bibliotheek van Spring Cloud Stream.
Afhankelijkheid instellen
<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>
Configuratie
Als u OAuth-verificatie wilt gebruiken, geeft u het Event Hubs-eindpunt op, zoals wordt weergegeven in het volgende voorbeeld:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Notitie
Als u versie 4.3.0gebruikt, stelt u de spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration eigenschap in om de volledige OAuth-verificatiewerkstroom in te schakelen. De kafka-binder-name is standaard kafka in een toepassing met één Kafka-binder. De configuratie AzureKafkaSpringCloudStreamConfiguration geeft de OAuth-beveiligingsparameters voor KafkaBinderConfigurationProperties. Deze configuratie wordt in KafkaOAuth2AuthenticateCallbackHandler gebruikt om Azure Identity in te schakelen.
Voor versies hierna 4.4.0wordt deze eigenschap automatisch toegevoegd voor elke Kafka-binderomgeving, dus u hoeft deze niet handmatig toe te voegen.
Beheerde identiteit gebruiken voor OAuth-verificatie
Als u beheerde identiteit wilt gebruiken, schakelt u beheerde identiteit voor uw service in en wijst u de
Azure Event Hubs Data ReceiverenAzure Event Hubs Data Senderrollen toe. Zie Azure-rollen toewijzen voor toegangsrechtenvoor meer informatie.Configureer de volgende eigenschappen in uw application.yml-bestand:
spring: cloud: azure: credential: managed-identity-enabled: trueBelangrijk
Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, voegt u ook de eigenschap
spring.cloud.azure.credential.client-idtoe met de client-id van uw door de gebruiker toegewezen beheerde identiteit.
Voorbeelden
Bekijk de azure-spring-boot-samples opslagplaats op GitHub.
Authenticatie met een verbindingsreeks gebruiken
U kunt verificatie van verbindingsreeksen rechtstreeks gebruiken of Azure Resource Manager gebruiken om de verbindingsreeks op te halen.
Notitie
Sinds versie 5.0.0 hebt u bij het gebruik van verbindingsreeks verificatie met Spring Cloud Stream-framework nog steeds de volgende eigenschap nodig om ervoor te zorgen dat de verbindingsreeks werkt. De waarde van kafka moet <kafka-binder-name> zijn als u de naam van uw Kafka-binder niet aanpast: spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Als de versie van spring-cloud-dependencies die u gebruikt 2022.0.0 is, treedt de uitzondering java.lang.IllegalStateException: kafka_context has not been refreshed yet op. Voer een upgrade uit naar een hogere versie om dit probleem op te lossen.
Afhankelijkheid instellen
Voeg de volgende afhankelijkheden toe als u uw Apache Kafka-toepassing wilt migreren om Azure Event Hubs voor Kafka te gebruiken.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Als u de verbindingsreeks wilt ophalen met behulp van Azure Resource Manager, voegt u de volgende afhankelijkheid toe:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Configuratie
Event Hubs-verbindingsreeks rechtstreeks gebruiken
De eenvoudigste manier om verbinding te maken met Event Hubs voor Kafka is met de verbindingsreeks. Voeg gewoon de volgende eigenschap toe.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Azure Resource Manager gebruiken om de verbindingsreeks op te halen
Als u de verbindingsreeks niet wilt configureren in uw toepassing, kunt u Azure Resource Manager gebruiken om de verbindingsreeks op te halen. Voor verificatie met Azure Resource Manager kunt u ook referenties gebruiken die zijn opgeslagen in Azure CLI of een ander lokaal ontwikkelprogramma, zoals Visual Studio Code of Intellij IDEA. U kunt ook Managed Identity gebruiken als uw toepassing is geïmplementeerd in Azure Cloud. Zorg ervoor dat de principal voldoende machtigingen heeft om metagegevens van resources te lezen.
Notitie
Als u ervoor kiest om een beveiligingsprincipaal te gebruiken om te verifiëren en autoriseren met Microsoft Entra ID voor toegang tot een Azure resource, raadpleegt u de sectie Toegang autoriseren met Microsoft Entra ID om ervoor te zorgen dat de beveiligingsprincipaal voldoende machtigingen heeft voor toegang tot de Azure resource.
Als u Azure Resource Manager wilt gebruiken om de verbindingsreeks op te halen, voegt u de volgende eigenschap toe.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Voorbeelden
Bekijk de azure-spring-boot-samples opslagplaats op GitHub.