¿Qué es Spring Cloud Azure?
Spring Cloud Azure es un proyecto de código abierto que ayuda a facilitar el uso de servicios de Azure en aplicaciones de Spring.
Spring Cloud Azure es un proyecto de código abierto, con todos los recursos disponibles para el público. En la lista siguiente se proporcionan vínculos a estos recursos:
- Código fuente: Azure/azure-sdk-for-java.
- Ejemplos: Azure-Samples/azure-spring-boot-samples.
- Documentación: Spring Cloud Azure.
¿Para qué se usa Spring Cloud Azure?
Spring Cloud Azure puede ayudar a facilitar la realización de las siguientes tareas en las aplicaciones de Spring:
- Administración de propiedades de configuración con App de Azure Configuración.
- Envío y recepción de mensajes con Azure Event Hubs, Azure Service Bus y cola de Azure Storage.
- Administración de secretos y certificados con Azure Key Vault.
- Compatibilidad con el inicio de sesión de usuario con cuentas profesionales o educativas aprovisionadas con el identificador de Microsoft Entra.
- Compatibilidad con el inicio de sesión de usuario con cuentas sociales como Facebook y Google con Azure Active Directory B2C.
- Proteger las API web y acceder a las API protegidas, como Microsoft Graph, para trabajar con los datos de los usuarios y la organización con el identificador de Microsoft Entra y Azure Active Directory B2C.
- Almacenamiento de datos estructurados con Azure Cosmos DB.
- Almacenamiento de datos no estructurados como texto o datos binarios con Azure Blob Storage.
- Almacenamiento de archivos con Azure Files.
Ventajas de usar Spring Cloud Azure
En la sección siguiente se muestran las ventajas de usar Spring Cloud Azure. En esta sección, la recuperación de secretos almacenados en Azure Key Vault se usa como ejemplo. En esta sección se comparan las diferencias entre el desarrollo de una aplicación de Spring Boot con y sin Spring Cloud Azure.
Sin Spring Cloud Azure
Sin Spring Cloud Azure, si desea recuperar secretos almacenados en Azure Key Vault, debe seguir estos pasos:
Agregue las siguientes dependencias al archivo pom.xml :
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>
Construya una
SecretClient
instancia de clase mediante código similar al ejemplo siguiente: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(); } }
Evite la información de codificación rígida, como
client-id
yclient-secret
haciendo que estas propiedades sean configurables, como se muestra en el ejemplo siguiente:@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; } }
Actualice el código de la aplicación como se muestra en este ejemplo:
@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()); } }
Agregue las propiedades necesarias al archivo application.yml , como se muestra en el ejemplo siguiente:
azure: keyvault: vault-url: tenant-id: client-id: client-secret:
Si necesita usar
SecretClient
en varios lugares, defina unSecretClient
bean. A continuación, conecte automáticamenteSecretClient
en los lugares pertinentes.
Con Spring Cloud Azure
Con Spring Cloud Azure, si desea recuperar secretos almacenados en Azure Key Vault, los requisitos son más sencillos, como se muestra en los pasos siguientes:
Agregue las siguientes dependencias al archivo pom.xml :
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>
Use una lista de materiales (BOM) para administrar la versión de Azure de Spring Cloud, como se muestra en el ejemplo siguiente:
<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>
Nota:
Si usa Spring Boot 2.x, asegúrese de establecer la
spring-cloud-azure-dependencies
versión4.19.0
en . Esta lista de materiales (BOM) debe configurarse en la<dependencyManagement>
sección del archivo pom.xml . Esto garantiza que todas las dependencias de Azure de Spring Cloud usen la misma versión. Para obtener más información sobre la versión que se usa para esta lista de materiales, consulte La versión de Spring Cloud que se debe usar en Azure.Agregue las siguientes propiedades al archivo application.yml:
spring: cloud: azure: keyvault: secret: endpoint:
Inicie sesión con la CLI de Azure mediante el comando siguiente. A continuación, la CLI de Azure proporcionará sus credenciales, por lo que no será necesario agregar otra información de credenciales, como
client-id
yclient-secret
.az login
Conexión automática
SecretClient
en los lugares pertinentes, como se muestra en el ejemplo siguiente:@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 proporcionará otras características además de la configuración automática SecretClient
. Por ejemplo, puede usar @Value
para obtener el valor del secreto, como se muestra en el ejemplo siguiente:
@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);
}
}
Componentes de Spring Cloud Azure
Soporte técnico de Azure
Proporciona compatibilidad con la configuración automática para los servicios de Azure, como Service Bus, Storage, Active Directory, etc.
Microsoft Entra ID
Proporciona compatibilidad de integración con Spring Security con el identificador de Entra de Microsoft para la autenticación. Para más información, consulte Compatibilidad de Spring Cloud en Azure para Spring Security.
Azure Key Vault
Proporciona compatibilidad con anotaciones de Spring @Value
para la integración con secretos de Azure Key Vault. Para más información, consulte Administración de secretos de Azure en Spring Cloud.
Azure Storage
Ofrece compatibilidad con Spring Boot para los servicios de Azure Storage. Para más información, consulte Control de recursos de Azure de Spring Cloud.
Obtener soporte técnico
Si necesita soporte técnico para Spring Cloud Azure, puede solicitar ayuda de las siguientes maneras:
- Cree vales de Soporte técnico de Azure. Los clientes con un plan de Soporte técnico de Azure pueden abrir un vale de Soporte técnico de Azure. Se recomienda esta opción si su problema requiere atención inmediata.
- Archivo de problemas de GitHub en el repositorio Azure/azure-sdk-for-java. Usamos problemas de GitHub para realizar un seguimiento de errores, preguntas y solicitudes de características. Los problemas de GitHub son gratuitos, pero no se garantiza el tiempo de respuesta. Para obtener más información, consulte El proceso de soporte técnico de problemas de GitHub.