Что такое Spring Cloud Azure?
Spring Cloud Azure — это проект открытый код, который упрощает использование служб Azure в приложениях Spring.
Spring Cloud Azure — это проект открытый код с всеми ресурсами, доступными для общественности. В следующем списке приведены ссылки на эти ресурсы:
- Исходный код: Azure/azure-sdk-for-java.
- Примеры: Azure-Samples/azure-spring-boot-samples.
- Документация: Spring Cloud Azure.
Для чего используется Azure Spring Cloud?
Spring Cloud Azure поможет упростить выполнение следующих задач в приложениях Spring:
- Управление свойствами конфигурации с помощью Конфигурация приложений Azure.
- Отправка и получение сообщений с помощью Центры событий Azure, Служебная шина Azure и очереди служба хранилища Azure.
- Управление секретами и сертификатами с помощью Azure Key Vault.
- Поддержка входа пользователей с рабочими или учебными учетными записями, подготовленными с помощью идентификатора Microsoft Entra.
- Поддержка входа пользователей с помощью социальных учетных записей, таких как Facebook и Google, с Azure Active Directory B2C.
- Защита веб-API и доступ к защищенным API, таким как Microsoft Graph, для работы с данными пользователей и организации с помощью идентификатора Microsoft Entra и Azure Active Directory B2C.
- Хранение структурированных данных с помощью Azure Cosmos DB.
- Хранение неструктурированных данных, таких как текстовые или двоичные данные с помощью Хранилище BLOB-объектов Azure.
- Хранение файлов с помощью Файлы Azure.
На следующей схеме представлен обзор этих функций:
Преимущества использования Spring Cloud Azure
В следующем разделе показаны преимущества использования Spring Cloud Azure. В этом разделе в качестве примера используется извлечение секретов, хранящихся в Azure Key Vault. В этом разделе сравниваются различия между разработкой приложения Spring Boot и без Azure Spring Cloud.
Без Spring Cloud Azure
Без Spring Cloud Azure, если вы хотите получить секреты, хранящиеся в Azure Key Vault, необходимо выполнить следующие действия.
Добавьте следующие зависимости в файл pom.xml :
<dependency> <groupId>com.azure</groupId> <artifactId>azure-security-keyvault-secrets</artifactId> <version>4.5.2</version> </dependency>
SecretClient
Создайте экземпляр класса с помощью кода, аналогичного следующему примеру: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(); } }
Избегайте жесткого написания таких сведений, как
client-id
иclient-secret
путем настройки этих свойств, как показано в следующем примере:@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; } }
Обновите код приложения, как показано в этом примере:
@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()); } }
Добавьте необходимые свойства в файл application.yml , как показано в следующем примере:
azure: keyvault: vault-url: tenant-id: client-id: client-secret:
Если необходимо использовать
SecretClient
в нескольких местах, определитеSecretClient
боб. Затем автоматически проводаSecretClient
в соответствующих местах.
С помощью Spring Cloud Azure
Если вы хотите получить секреты, хранящиеся в Azure Key Vault, то требования проще, как показано на следующих шагах:
Добавьте следующие зависимости в файл pom.xml :
<dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId> </dependency> </dependencies>
Используйте счет за материалы (BOM) для управления версией Azure Spring Cloud, как показано в следующем примере:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Примечание.
Если вы используете Spring Boot 2.x, обязательно установите для нее
spring-cloud-azure-dependencies
значение4.17.0
. Этот счет материалов (BOM) должен быть настроен в<dependencyManagement>
разделе pom.xml файла. Это гарантирует, что все зависимости Azure Spring Cloud используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в статье "Какая версия Spring Cloud Azure должна использоваться".Добавьте следующие свойства в файл application.yml.
spring: cloud: azure: keyvault: secret: endpoint:
Войдите в Azure CLI с помощью следующей команды. Ваши учетные данные будут предоставлены Azure CLI, поэтому добавлять другие учетные данные, такие как
client-id
иclient-secret
.az login
Автопроводка
SecretClient
в соответствующих местах, как показано в следующем примере:@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 предоставляет некоторые другие функции, кроме автоматически настроенного SecretClient
. Например, можно использовать @Value
для получения значения секрета, как показано в следующем примере:
@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);
}
}
Компоненты Spring Cloud Azure
Поддержка Azure
Предоставляет поддержку автоматической настройки для служб Azure, таких как служебная шина, служба хранилища, Active Directory и т. д.
Microsoft Entra ID
Предоставляет поддержку интеграции Spring Security с идентификатором Microsoft Entra для проверки подлинности. Дополнительные сведения см. в разделе Spring Cloud поддержка Azure для Spring Security.
Azure Key Vault
Предоставляет поддержку заметки Spring @Value
для интеграции с секретами Azure Key Vault. Дополнительные сведения см. в разделе "Управление секретами Azure Spring Cloud".
Хранилище Azure
Spring Boot поддерживает службы хранилища Azure. Дополнительные сведения см. в статье Об обработке ресурсов Azure Spring Cloud.
Поддержка
Если вам нужна поддержка Spring Cloud Azure, вы можете обратиться за помощью следующим образом:
- Создайте поддержка Azure билеты. Клиенты с планом поддержка Azure могут открыть билет поддержка Azure. Мы рекомендуем этот вариант, если ваша проблема требует немедленного внимания.
- Проблемы с файлом GitHub в репозитории Azure/azure-sdk-for-java. Мы используем проблемы GitHub для отслеживания ошибок, вопросов и запросов функций. Проблемы GitHub бесплатны, но время отклика не гарантируется. Дополнительные сведения см. в разделе о проблемах с GitHub.
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по