Co je Spring Cloud Azure?
Spring Cloud Azure je opensourcový projekt, který usnadňuje používání služeb Azure v aplikacích Spring.
Spring Cloud Azure je opensourcový projekt se všemi dostupnými prostředky pro veřejnost. Následující seznam obsahuje odkazy na tyto zdroje informací:
- Zdrojový kód: Azure/azure-sdk-for-java.
- Ukázky: Azure-Samples/azure-spring-boot-samples.
- Dokumentace: Spring Cloud Azure.
K čemu se Používá Spring Cloud Azure?
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řijímání zpráv pomocí služby Azure Event Hubs, služby Azure Service Bus, a fronty Azure Storage Queue.
- Správa tajných klíčů a certifikátů pomocí služby Azure Key Vault.
- Podpora přihlašování uživatelů prostřednictvím pracovních nebo školních účtů zajištěných pomocí ID Microsoft Entra.
- Podpora přihlašování uživatelů pomocí sociálních účtů, jako je Facebook a Google, s 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 s Microsoft Entra ID a Azure Active Directory B2C.
- Ukládání strukturovaných dat pomocí 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.
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 ve službě Azure Key Vault. Tato část porovnává rozdíly mezi vývojem aplikace Spring Boot a bez Platformy Spring Cloud v Azure.
Bez Spring Cloudu Azure
Pokud chcete načíst tajné kódy uložené ve službě Azure Key Vault, musíte bez Služby Spring Cloud Azure 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 instanci třídy
SecretClient
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 pevným kódováním informací, jako jsou
client-id
aclient-secret
, a to tak, ž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. Potom automaticky propojteSecretClient
na příslušných místech.
S Využitím Spring Cloudu Azure
S pomocí Spring Cloud Azure, pokud chcete načíst tajemství uložená v Azure Key Vault, jsou požadavky 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 Azure Spring Cloud použijte fakturu (BOM), 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>5.19.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Poznámka
Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependencies
verzi na4.19.0
. Tato faktura materiálu (BOM) by měla být nakonfigurovaná v části<dependencyManagement>
souboru pom.xml. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi. Další informace o verzi použité pro tento kusovník najdete v tématu Jakou verzi Spring Cloud 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 jsou
client-id
aclient-secret
.az login
Automaticky připojte vodič
SecretClient
na příslušná místa, 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ých SecretClient
poskytovat i další funkce. Můžete například použít @Value
k získání hodnoty tajného kódu, 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 služeb Azure, jako je Service Bus, Storage, Active Directory atd.
Microsoft Entra ID
Poskytuje podporu integrace pro Spring Security s ID Microsoft Entra pro ověřování. Další informace najdete v části podpora Spring Cloud Azure pro Spring Security.
Azure Key Vault
Poskytuje podporu poznámek Spring @Value
pro integraci s tajnými klíči služby Azure Key Vault. Další informace najdete v tématu Správa tajných kódů Spring Cloud v Azure.
Azure Storage
Poskytuje podporu Spring Boot pro služby Azure Storage. Další informace najdete v tématu zpracování prostředků Azure Spring Cloud.
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 požadavky na podporu Azure. Zákazníci s plánem podpory Azure můžou otevřít lístek podpory Azure. Tuto možnost doporučujeme, pokud váš problém vyžaduje okamžitou pozornost.
- Zakažte problémy s GitHubem v úložiště Azure/azure-sdk-for-java. Problémy GitHubu používáme ke sledování chyb, otázek a žádostí o funkce. Problémy s GitHubem jsou bezplatné, ale doba odezvy není zaručená. Další informace najdete v tématu problémy s procesem podpory GitHubu.