Dela via


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 de nödvändiga egenskaperna 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 anslut SecretClient automatiskt i 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.19.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Not

    Om du använder Spring Boot 2.x måste du ange spring-cloud-azure-dependencies version till 4.19.0. Den här strukturlistan (BOM) bör konfigureras i avsnittet <dependencyManagement> i 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 denna BOM 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. Auto-wire SecretClient på de relevanta ställena, enligt 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 Spring Cloud Azure-stöd för Spring Security.

Azure Key Vault

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

Azure Storage

Tillhandahåller 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