Co je Spring Cloud Azure?
Spring Cloud Azure je open source projekt, který usnadňuje používání služeb Azure v aplikacích Spring.
Spring Cloud Azure je open source projekt se všemi dostupnými prostředky pro veřejnost. Následující seznam obsahuje odkazy na tyto prostředky:
- Zdrojový kód: Azure/azure-sdk-for-java.
- Ukázky: Azure-Samples/azure-spring-boot-samples.
- Dokumentace: Spring Cloud Azure.
K čemu se Spring Cloud Azure používá?
Spring Cloud Azure může usnadnit provádění následujících úloh v aplikacích Spring:
- Správa vlastností konfigurace pomocí Azure App Configuration
- Odesílání a příjem zpráv s Azure Event Hubs, Azure Service Bus a frontou služby Azure Storage
- Správa tajných kódů a certifikátů pomocí Azure Key Vault
- Podpora přihlašování uživatelů pomocí pracovních nebo školních účtů zřízených pomocí Azure Active Directory
- Podpora přihlašování uživatelů pomocí účtů na sociálních sítích, jako je Facebook a Google, pomocí Azure Active Directory B2C.
- Ochrana webových rozhraní API a přístup k chráněným rozhraním API, jako je Microsoft Graph, pro práci s daty uživatelů a organizace pomocí Azure Active Directory a Azure Active Directory B2C
- Ukládání strukturovaných dat pomocí služby Azure Cosmos DB
- Ukládání nestrukturovaných dat, jako jsou textová nebo binární data, pomocí Azure Blob Storage
- Ukládání souborů pomocí Azure Files.
Následující diagram obsahuje přehled těchto funkcí:
Výhody používání Spring Cloud Azure
Následující část ukazuje výhody používání Spring Cloud Azure. V této části se jako příklad používá načítání tajných kódů uložených v Azure Key Vault. Tato část porovnává rozdíly mezi vývojem aplikace Spring Boot s a bez Spring Cloud Azure.
Bez Spring Cloud Azure
Pokud chcete načíst tajné kódy uložené v Azure Key Vault bez Spring Cloud Azure, musíte provést následující kroky:
Do souboru pom.xml přidejte následující závislosti:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>
Vytvořte
SecretClient
instanci třídy pomocí kódu podobného následujícímu příkladu: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(); } }
Vyhněte se informacím o pevném kódování, jako
client-id
jsou aclient-secret
, a tím, že tyto vlastnosti nakonfigurujete, jak je znázorněno v následujícím příkladu:@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; } }
Aktualizujte kód aplikace, jak je znázorněno v tomto příkladu:
@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()); } }
Přidejte do souboru application.yml potřebné vlastnosti, jak je znázorněno v následujícím příkladu:
azure: keyvault: vault-url: tenant-id: client-id: client-secret:
Pokud potřebujete použít
SecretClient
na více místech, definujteSecretClient
bean. Pak se automaticky provrátíSecretClient
na příslušných místech.
S využitím Spring Cloud Azure
Pokud chcete načíst tajné kódy uložené v Azure Key Vault, jsou požadavky ve Spring Cloud Azure jednodušší, jak je znázorněno v následujících krocích:
Do souboru pom.xml přidejte následující závislosti:
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>
Ke správě verze Spring Cloud Azure použijte kusovník (KUSOVNÍK), jak je znázorněno v následujícím příkladu:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>4.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Poznámka
Pokud používáte Spring Boot 3.x, nezapomeňte nastavit
spring-cloud-azure-dependencies
verzi na5.5.0
. Další informace o verzi najdete vspring-cloud-azure-dependencies
tématu Kterou verzi Spring Cloudu Azure mám použít.Do souboru application.yml přidejte následující vlastnosti:
spring: cloud: azure: keyvault: secret: endpoint:
Přihlaste se pomocí Azure CLI pomocí následujícího příkazu. Vaše přihlašovací údaje pak poskytne Azure CLI, takže nebude nutné přidávat další informace o přihlašovacích údaji, jako
client-id
jsou aclient-secret
.az login
Automatické dráty
SecretClient
na příslušných místech, jak je znázorněno v následujícím příkladu:@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 bude kromě automaticky nakonfigurovaného SecretClient
prostředí poskytovat i některé další funkce. Můžete například použít @Value
k získání hodnoty tajného klíče, jak je znázorněno v následujícím příkladu:
@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);
}
}
Komponenty Spring Cloud Azure
Podpora Azure
Poskytuje podporu automatické konfigurace pro služby Azure, jako je Service Bus, Storage, Active Directory atd.
Azure Active Directory
Poskytuje podporu integrace Spring Security s Azure Active Directory pro účely ověřování. Další informace najdete v tématu Spring Cloud podpora Azure for Spring Security.
Azure Key Vault
Poskytuje podporu poznámek Spring @Value
pro integraci s tajnými kódy Azure Key Vault. Další informace najdete v tématu Správa tajných kódů Azure ve Spring Cloudu.
Azure Storage
Poskytuje podporu architektury Spring Boot pro služby Azure Storage. Další informace najdete v tématu Zpracování prostředků Azure ve Spring Cloudu.
Získání podpory
Pokud potřebujete podporu pro Spring Cloud Azure, můžete požádat o pomoc následujícími způsoby:
- Vytvořte podpora Azure lístky. Zákazníci s plánem podpora Azure můžou otevřít lístek podpora Azure. Tuto možnost doporučujeme, pokud váš problém vyžaduje okamžitou pozornost.
- Zapište problémy GitHubu do úložiště Azure/azure-sdk-for-java. Problémy s GitHubem používáme ke sledování chyb, dotazů a žádostí o funkce. Problémy s GitHubem jsou bezplatné, ale doba odezvy není zaručená. Další informace najdete v tématu o procesu podpory problémů na GitHubu.