Vad är Spring Cloud Azure?

Spring Cloud Azure är ett projekt med öppen källkod som gör det enklare att använda Azure-tjänster i Spring-program .

Spring Cloud Azure är ett projekt med öppen källkod med alla resurser som är tillgängliga för allmänheten. Följande lista innehåller länkar till dessa resurser:

Vad används Spring Cloud Azure för?

Spring Cloud Azure kan göra det enklare att utföra följande uppgifter i Spring-program:

Fördelar med att använda Spring Cloud Azure

I följande avsnitt visas fördelarna med att använda Spring Cloud Azure. I det här avsnittet används hämtning av hemligheter som lagras i Azure Key Vault som ett exempel. I det här avsnittet jämförs skillnaderna mellan att utveckla ett Spring Boot-program med och utan Spring Cloud Azure.

Utan Spring Cloud Azure

Utan Spring Cloud Azure behöver du följande steg om du vill hämta hemligheter som lagras i Azure Key Vault:

  1. Lägg till följande beroenden i din pom.xml-fil :

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Skapa en SecretClient klassinstans med hjälp av kod som liknar följande exempel:

    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();
        }
    }
    
  3. Undvik hård kodningsinformation som client-id och client-secret genom att göra dessa egenskaper konfigurerbara, som du ser i följande exempel:

    @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;
        }
    }
    
  4. Uppdatera programkoden enligt det här exemplet:

    @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());
        }
    }
    
  5. Lägg till nödvändiga egenskaper i din application.yml-fil , som du ser i följande exempel:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. Om du behöver använda SecretClient på flera platser definierar du en SecretClient böna. Sedan kan du automatiskt kabelansluta SecretClient på relevanta platser.

Med Spring Cloud Azure

Med Spring Cloud Azure är kraven enklare om du vill hämta hemligheter som lagras i Azure Key Vault, enligt följande steg:

  1. Lägg till följande beroenden i din pom.xml-fil :

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Använd en strukturlista (BOM) för att hantera Spring Cloud Azure-versionen, som du ser i följande exempel:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.17.1</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Kommentar

    Om du använder Spring Boot 2.x måste du ange spring-cloud-azure-dependencies versionen till 4.19.0. Den här strukturlistan (BOM) bör konfigureras i avsnittet i <dependencyManagement> din pom.xml-fil . Detta säkerställer att alla Spring Cloud Azure-beroenden använder samma version. Mer information om vilken version som används för den här strukturlistan finns i Vilken version av Spring Cloud Azure ska jag använda.

  3. Lägg till följande egenskaper i din application.yml-fil :

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Logga in med Azure CLI med hjälp av följande kommando. Dina autentiseringsuppgifter tillhandahålls sedan av Azure CLI, så du behöver inte lägga till annan information om autentiseringsuppgifter som client-id och client-secret.

    az login
    
  5. Autotråd SecretClient på relevanta platser, som du ser i följande exempel:

    @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 tillhandahåller några andra funktioner förutom den automatiskt konfigurerade SecretClient. Du kan till exempel använda @Value för att hämta det hemliga värdet, som du ser i följande exempel:

@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);
    }

}

Komponenter i Spring Cloud Azure

Azure support

Ger stöd för automatisk konfiguration för Azure-tjänster, till exempel Service Bus, Storage, Active Directory och så vidare.

Microsoft Entra ID

Tillhandahåller integrationsstöd för Spring Security med Microsoft Entra-ID för autentisering. Mer information finns i Stöd för Spring Cloud Azure för Spring Security.

Azure Key Vault

Tillhandahåller springanteckningsstöd @Value för integrering med Azure Key Vault-hemligheter. Mer information finns i Azure-hemlighetshantering för Spring Cloud.

Azure Storage

Ger Spring Boot-stöd för Azure Storage-tjänster. Mer information finns i Spring Cloud Azure-resurshantering.

Få support

Om du behöver support för Spring Cloud Azure kan du be om hjälp på följande sätt:

Nästa steg