¿Qué es Spring Cloud Azure?
Spring Cloud Azure es un proyecto de código abierto que ayuda a facilitar el uso de servicios Azure en aplicaciones 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.
- Muestras: 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 Azure App Configuration.
- Envío y recepción de mensajes con Azure Event Hubs, Azure Service Busy Azure Storage Queue.
- Administración de secretos y certificados con Azure Key Vault.
- Soporte de inicio de sesión de usuario con cuentas de trabajo o escuela aprovisionadas con Microsoft Entra ID.
- Soporte de inicio de sesión de usuario con cuentas de redes sociales como Facebook y Google con Azure Active Directory B2C.
- Proteger tus API web y acceder a las API protegidas, como Microsoft Graph, para trabajar con los datos de tus usuarios y tu organización con Microsoft Entra ID 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>
Cree una instancia de clase
SecretClient
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 codificación fija de información, como
client-id
yclient-secret
, mediante la configuración de estas propiedades, 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 un bean deSecretClient
. A continuación, autocableadoSecretClient
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.19.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Nota:
Si usa Spring Boot 2.x, asegúrese de establecer la versión de
spring-cloud-azure-dependencies
en4.19.0
. Esta lista de materiales (BOM) debe configurarse en la sección<dependencyManagement>
del archivo pom.xml. Esto garantiza que todas las dependencias de Spring Cloud Azure usen la misma versión. Para obtener más información sobre la versión usada para este BOM, consulte qué versión de Spring Cloud Azure se debe usar.Agregue las siguientes propiedades al archivo application.yml:
spring: cloud: azure: keyvault: secret: endpoint:
Inicie sesión con 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
Autocableado
SecretClient
en los lugares relevantes, como se muestra en el siguiente ejemplo:@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 del SecretClient
configurado automáticamente. 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
Ofrece funcionalidad de configuración automática para los servicios de Azure, como Service Bus, Storage o Active Directory.
Microsoft Entra ID
Proporciona compatibilidad de integración con Spring Security con Microsoft Entra ID para la autenticación. Para más información, consulte Compatibilidad de Spring Cloud en Azure para Spring Security.
Azure Key Vault
Ofrece compatibilidad con la anotación de @Value
de Spring para la integración con los secretos de Azure Key Vault. Para obtener más información, consulte Administración de secretos de Spring Cloud Azure.
Almacenamiento de Azure
Ofrece compatibilidad con Spring Boot para los servicios de Azure Storage. Para obtener más información, consulte Administración de recursos de Spring Cloud Azure.
Obtención de soporte técnico
Si necesita soporte técnico para Spring Cloud Azure, puede solicitar ayuda de las siguientes maneras:
- Cree tickets de soporte técnico de Azure. Los clientes con un plan de soporte técnico de Azure pueden abrir un ticket de soporte técnico de Azure . Se recomienda esta opción si su problema requiere atención inmediata.
- Presente incidencias 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. Las incidencias de GitHub son gratuitas, pero no se garantiza el tiempo de respuesta. Para obtener más información, consulte el proceso de soporte de problemas de GitHub .