Was ist Spring Cloud Azure?
Spring Cloud Azure ist ein Open Source-Projekt, das die Verwendung von Azure-Diensten in Spring-Anwendungen erleichtert.
Spring Cloud Azure ist ein Open Source-Projekt mit allen Ressourcen, die für die Öffentlichkeit verfügbar sind. Die folgende Liste enthält Links zu diesen Ressourcen:
- Quellcode: Azure/azure-sdk-for-java.
- Beispiele: Azure-Samples/azure-spring-boot-samples.
- Dokumentation: Spring Cloud Azure.
Wofür wird Spring Cloud Azure verwendet?
Spring Cloud Azure kann dazu beitragen, die folgenden Aufgaben in Spring-Anwendungen zu vereinfachen:
- Verwalten von Konfigurationseigenschaften mit Azure-App Konfiguration.
- Senden und Empfangen von Nachrichten mit Azure Event Hubs, Azure Service Bus und Azure Storage Queue.
- Verwalten von geheimen Schlüsseln und Zertifikaten mit Azure Key Vault.
- Unterstützung der Benutzeranmeldung mit Geschäfts-, Schul- oder Unikonten, die mit Microsoft Entra-ID bereitgestellt werden.
- Unterstützung der Benutzeranmeldung mit sozialen Konten wie Facebook und Google mit Azure Active Directory B2C.
- Schützen Sie Ihre Web-APIs und den Zugriff auf geschützte APIs wie Microsoft Graph, um mit den Daten Ihrer Benutzer und Ihrer Organisation mit Microsoft Entra ID und Azure Active Directory B2C zu arbeiten.
- Speichern strukturierter Daten mit Azure Cosmos DB.
- Speichern unstrukturierter Daten wie Text- oder Binärdaten mit Azure Blob Storage.
- Speichern von Dateien mit Azure Files.
Vorteile der Verwendung von Spring Cloud Azure
Im folgenden Abschnitt werden die Vorteile der Verwendung von Spring Cloud Azure veranschaulicht. In diesem Abschnitt wird der Abruf von geheimen Schlüsseln, die in Azure Key Vault gespeichert sind, als Beispiel verwendet. In diesem Abschnitt werden die Unterschiede zwischen der Entwicklung einer Spring Boot-Anwendung mit und ohne Spring Cloud Azure verglichen.
Ohne Spring Cloud Azure
Ohne Spring Cloud Azure müssen Sie die folgenden Schritte ausführen, wenn Sie geheime Schlüssel abrufen möchten, die in Azure Key Vault gespeichert sind:
Fügen Sie ihrer pom.xml Datei die folgenden Abhängigkeiten hinzu:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>
Erstellen Sie eine
SecretClient
Klasseninstanz mithilfe von Code, der dem folgenden Beispiel ähnelt:public class DemoClass { public static void main(String... args) { SecretClient client = new SecretClientBuilder() .vaultUrl("vaultUrl") .credential(new ClientSecretCredentialBuilder() .tenantId("tenantId") .clientId("clientId") .clientSecret("clientSecret") .build()) .buildClient(); } }
Vermeiden Sie hartcodierende Informationen wie
client-id
z. B. undclient-secret
legen Sie diese Eigenschaften konfigurierbar, wie im folgenden Beispiel gezeigt:@ConfigurationProperties("azure.keyvault") public class KeyVaultProperties { private String vaultUrl; private String tenantId; private String clientId; private String clientSecret; public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) { this.vaultUrl = vaultUrl; this.tenantId = tenantId; this.clientId = clientId; this.clientSecret = clientSecret; } public String getVaultUrl() { return vaultUrl; } public void setVaultUrl(String vaultUrl) { this.vaultUrl = vaultUrl; } public String getTenantId() { return tenantId; } public void setTenantId(String tenantId) { this.tenantId = tenantId; } public String getClientId() { return clientId; } public void setClientId(String clientId) { this.clientId = clientId; } public String getClientSecret() { return clientSecret; } public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } }
Aktualisieren Sie ihren Anwendungscode wie in diesem Beispiel gezeigt:
@SpringBootApplication @EnableConfigurationProperties(KeyVaultProperties.class) public class SecretClientApplication implements CommandLineRunner { private KeyVaultProperties properties; public SecretClientApplication(KeyVaultProperties properties) { this.properties = properties; } public static void main(String[] args) { SpringApplication.run(SecretClientApplication.class, args); } @Override public void run(String... args) { SecretClient client = new SecretClientBuilder() .vaultUrl(properties.getVaultUrl()) .credential(new ClientSecretCredentialBuilder() .tenantId(properties.getTenantId()) .clientId(properties.getClientId()) .clientSecret(properties.getClientSecret()) .build()) .buildClient(); System.out.println("sampleProperty: " + client.getSecret("sampleProperty").getValue()); } }
Fügen Sie der datei application.yml die erforderlichen Eigenschaften hinzu, wie im folgenden Beispiel gezeigt:
azure: keyvault: vault-url: tenant-id: client-id: client-secret:
Wenn Sie an mehreren Stellen verwenden müssen, definieren Sie eine Bohnen.If you need to use
SecretClient
in multiple places, define aSecretClient
bean. Dann, autoverdrahtenSecretClient
an den relevanten Stellen.
Mit Spring Cloud Azure
Wenn Sie mit Spring Cloud Azure geheime Schlüssel abrufen möchten, die in Azure Key Vault gespeichert sind, sind die Anforderungen einfacher, wie in den folgenden Schritten gezeigt:
Fügen Sie ihrer pom.xml Datei die folgenden Abhängigkeiten hinzu:
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>
Verwenden Sie eine Stückliste (BOM), um die Spring Cloud Azure-Version zu verwalten, wie im folgenden Beispiel gezeigt:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.18.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Hinweis
Wenn Sie Spring Boot 2.x verwenden, stellen Sie sicher, dass Sie die
spring-cloud-azure-dependencies
Version auf4.19.0
. Diese Stückliste (Bill of Material, BOM) sollte im<dependencyManagement>
Abschnitt Ihrer pom.xml Datei konfiguriert werden. Dadurch wird sichergestellt, dass alle Spring Cloud Azure-Abhängigkeiten dieselbe Version verwenden. Weitere Informationen zu der version, die für diese BOM verwendet wird, finden Sie unter Welche Version von Spring Cloud Azure sollte ich verwenden.Fügen Sie der Datei application.yml die folgenden Eigenschaften hinzu:
spring: cloud: azure: keyvault: secret: endpoint:
Melden Sie sich mit Azure CLI mit dem folgenden Befehl an. Ihre Anmeldeinformationen werden dann von Azure CLI bereitgestellt, daher müssen keine weiteren Anmeldeinformationen wie
client-id
undclient-secret
.az login
Automatisches Drahten
SecretClient
an den relevanten Stellen, wie im folgenden Beispiel gezeigt:@SpringBootApplication public class SecretClientApplication implements CommandLineRunner { private final SecretClient secretClient; public SecretClientApplication(SecretClient secretClient) { this.secretClient = secretClient; } public static void main(String[] args) { SpringApplication.run(SecretClientApplication.class, args); } @Override public void run(String... args) { System.out.println("sampleProperty: " + secretClient.getSecret("sampleProperty").getValue()); } }
Spring Cloud Azure bietet neben dem automatisch konfigurierten SecretClient
Feature einige weitere Features. Sie können z. B. den @Value
geheimen Wert abrufen, wie im folgenden Beispiel gezeigt:
@SpringBootApplication
public class PropertySourceApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
public static void main(String[] args) {
SpringApplication.run(PropertySourceApplication.class, args);
}
public void run(String[] args) {
System.out.println("sampleProperty1: " + sampleProperty1);
}
}
Komponenten von Spring Cloud Azure
Azure-Support
Bietet Unterstützung für die automatische Konfiguration für Azure-Dienste, z. B. Service Bus, Speicher, Active Directory usw.
Microsoft Entra ID
Bietet Integrationsunterstützung für Spring Security mit Microsoft Entra ID für die Authentifizierung. Weitere Informationen finden Sie unter Spring Cloud Azure-Unterstützung für Spring Security.
Azure Key Vault
Bietet Unterstützung für die Springanmerkung @Value
für die Integration in Azure Key Vault Secrets. Weitere Informationen finden Sie unter Spring Cloud Secret Management.
Azure Storage
Bietet Spring Boot-Unterstützung für Azure Storage-Dienste. Weitere Informationen finden Sie unter Spring Cloud Azure-Ressourcenbehandlung.
Support
Wenn Sie Unterstützung für Spring Cloud Azure benötigen, können Sie auf folgende Weise Hilfe anfordern:
- Erstellen Sie Azure-Support Tickets. Kunden mit einem Azure-Support Plan können ein Azure-Support Ticket öffnen. Wir empfehlen diese Option, wenn Ihr Problem sofortige Aufmerksamkeit erfordert.
- Datei-GitHub-Probleme im Azure/azure-sdk-for-java-Repository. Wir verwenden GitHub-Probleme, um Fehler, Fragen und Featureanforderungen nachzuverfolgen. GitHub-Probleme sind kostenlos, aber die Reaktionszeit ist nicht garantiert. Weitere Informationen finden Sie unter GitHub-Supportprozess.