Självstudie: Använda Key Vault referenser i en Java Spring-app
I den här självstudien lär du dig att använda Azure App Configuration-tjänsten tillsammans med Azure Key Vault. App Configuration och Key Vault kompletterande tjänster som används sida vid sida i de flesta programdistributioner.
App Configuration hjälper dig att använda tjänsterna tillsammans genom att skapa nycklar som refererar till värden som lagras i Key Vault. När App Configuration skapar sådana nycklar lagras URI:erna för Key Vault i stället för själva värdena.
Ditt program använder App Configuration för att hämta Key Vault referenser, precis som för andra nycklar som lagras i App Configuration. I det här fallet är de värden som lagras App Configuration URI:er som refererar till värdena i Key Vault. De är inte Key Vault värden eller autentiseringsuppgifter. Eftersom klientprovidern identifierar nycklarna som Key Vault referenser, använder den Key Vault för att hämta deras värden.
Ditt program ansvarar för att autentisera korrekt för både App Configuration och Key Vault. De två tjänsterna kommunicerar inte direkt.
Den här självstudien visar hur du implementerar Key Vault-referenser i koden. Den bygger på den webbapp som introducerades i snabbstarterna. Innan du fortsätter slutför du Skapa en Java Spring-app med App Configuration först.
Du kan använda valfri kodredigerare för att göra stegen i den här självstudien. Till exempel Visual Studio Code är en plattformsoberoende kodredigerare som är tillgänglig för operativsystemen Windows, macOS och Linux.
I den här guiden får du lära dig att:
- Skapa en App Configuration som refererar till ett värde som lagras i Key Vault.
- Få åtkomst till värdet för den här nyckeln från ett Java Spring-program.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Ett Java Development Kit (JDK) med version 8 som stöds.
- Apache Maven version 3.0 eller senare.
Skapa ett valv
Välj alternativet Skapa en resurs i det övre vänstra hörnet i Azure Portal:

Ange Key Vault i sökrutan.
I resultatlistan väljer du Nyckelvalv till vänster.
I Nyckelvalv väljer du Lägg till.
Ange följande information till höger i Skapa nyckelvalv:
- Välj Prenumeration för att välja en prenumeration.
- I Resursgrupp väljer du Skapa ny och anger ett resursgruppsnamn.
- I Nyckelvalvsnamn krävs ett unikt namn. I den här självstudien anger du Contoso-vault2.
- Välj en plats i listrutan Region.
Lämna standardvärdena för de andra alternativen för att skapa nyckelvalv.
Välj Skapa.
Nu är ditt Azure-konto det enda som har behörighet att komma åt det nya valvet.

Lägga till en hemlighet i Key Vault
Om du vill lägga till en hemlighet i valvet behöver du bara vidta några ytterligare steg. I det här fallet lägger du till ett meddelande som du kan använda för att Key Vault hämtning. Meddelandet kallas Meddelande och du lagrar värdet "Hello from Key Vault" i det.
- På sidan Key Vault egenskaper väljer du Hemligheter.
- Välj Generera/importera.
- I fönstret Skapa en hemlighet anger du följande värden:
- Upload alternativ: Ange Manuell.
- Namn: Ange meddelande.
- Värde: Ange Hello från Key Vault.
- Lämna de andra egenskaperna Skapa en hemlighet med sina standardvärden.
- Välj Skapa.
Lägga till Key Vault referens till App Configuration
Logga in på Azure-portalen. Välj Alla resurser och välj sedan den App Configuration Store-instansen som du skapade i snabbstarten.
Välj Configuration Explorer.
Välj + Skapa > nyckelvalvsreferens och ange sedan följande värden:
- Nyckel: Välj /application/config.keyvaultmessage
- Etikett: Lämna det här värdet tomt.
- Prenumeration, Resursgrupp och Nyckelvalv: Ange de värden som motsvarar värdena i nyckelvalvet som du skapade i föregående avsnitt.
- Hemlighet: Välj hemligheten med namnet Meddelande som du skapade i föregående avsnitt.
Anslut till Key Vault
I den här självstudien använder du ett huvudnamn för tjänsten för autentisering för att Key Vault. Om du vill skapa tjänstens huvudnamn använder du kommandot Azure CLI az ad sp create-for-rbac:
az ad sp create-for-rbac -n "http://mySP" --role Contributor --sdk-authDen här åtgärden returnerar en serie nyckel/värde-par:
{ "clientId": "7da18cae-779c-41fc-992e-0527854c6583", "clientSecret": "b421b443-1669-4cd7-b5b1-394d5c945002", "subscriptionId": "443e30da-feca-47c4-b68f-1636b75e16b3", "tenantId": "35ad10f1-7799-4766-9acf-f2d946161b77", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com/", "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net/" }Kör följande kommando för att ge tjänstens huvudnamn åtkomst till ditt nyckelvalv:
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete getKör följande kommando för att hämta ditt objekt-id och lägg sedan till det i App Configuration.
az ad sp show --id <clientId-of-your-service-principal> az role assignment create --role "App Configuration Data Reader" --assignee-object-id <objectId-of-your-service-principal> --resource-group <your-resource-group>Skapa miljövariablerna AZURE_CLIENT_ID, AZURE_CLIENT_SECRET och AZURE_TENANT_ID. Använd värdena för tjänstens huvudnamn som visades i föregående steg. Kör följande kommandon på kommandoraden och starta om kommandotolken så att ändringen börjar gälla:
setx AZURE_CLIENT_ID "clientId" setx AZURE_CLIENT_SECRET "clientSecret" setx AZURE_TENANT_ID "tenantId"Om du använder Windows PowerShell kör du följande kommando:
$Env:AZURE_CLIENT_ID = "clientId" $Env:AZURE_CLIENT_SECRET = "clientSecret" $Env:AZURE_TENANT_ID = "tenantId"Om du använder macOS eller Linux kör du följande kommando:
export AZURE_CLIENT_ID ='clientId' export AZURE_CLIENT_SECRET ='clientSecret' export AZURE_TENANT_ID ='tenantId'
Anteckning
De Key Vault autentiseringsuppgifterna används bara i ditt program. Ditt program autentiseras direkt med Key Vault med dessa autentiseringsuppgifter utan att App Configuration tjänsten. Den Key Vault autentisering för både ditt program och din App Configuration utan att dela eller exponera nycklar.
Uppdatera koden så att den använder Key Vault referens
Skapa en miljövariabel med namnet APP_CONFIGURATION_ENDPOINT. Ange dess värde till slutpunkten för App Configuration store. Du hittar slutpunkten på bladet Åtkomstnycklar i Azure Portal. Starta om kommandotolken så att ändringen börjar gälla.
Öppna bootstrap.properties i resursmappen. Uppdatera den här filen så att den APP_CONFIGURATION_ENDPOINT värdet. Ta bort alla referenser till en anslutningssträng i den här filen.
spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT}Öppna MessageProperties.java. Lägg till en ny variabel med namnet keyVaultMessage:
private String keyVaultMessage; public String getKeyVaultMessage() { return keyVaultMessage; } public void setKeyVaultMessage(String keyVaultMessage) { this.keyVaultMessage = keyVaultMessage; }Öppna HelloController.java. Uppdatera metoden getMessage så att den inkluderar meddelandet som hämtats från Key Vault.
@GetMapping public String getMessage() { return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage(); }Skapa en ny fil med namnet AzureCredentials.java och lägg till koden nedan.
package com.example.demo; import com.azure.core.credential.TokenCredential; import com.azure.identity.EnvironmentCredentialBuilder; import com.azure.spring.cloud.config.AppConfigurationCredentialProvider; import com.azure.spring.cloud.config.KeyVaultCredentialProvider; public class AzureCredentials implements AppConfigurationCredentialProvider, KeyVaultCredentialProvider{ @Override public TokenCredential getKeyVaultCredential(String uri) { return getCredential(); } @Override public TokenCredential getAppConfigCredential(String uri) { return getCredential(); } private TokenCredential getCredential() { return new EnvironmentCredentialBuilder().build(); } }Skapa en ny fil med namnet AppConfiguration.java. Lägg till koden nedan.
package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfiguration { @Bean public AzureCredentials azureCredentials() { return new AzureCredentials(); } }Skapa en ny fil i katalogen META-INF med namnet spring.factories och lägg till koden nedan.
org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.demo.AppConfigurationSkapa ditt Spring Boot med Maven och kör det, till exempel:
mvn clean package mvn spring-boot:runNär programmet körs använder du curl för att testa programmet, till exempel:
curl -X GET http://localhost:8080/Du ser meddelandet som du angav i App Configuration Store. Du ser också meddelandet som du angav i Key Vault.
Rensa resurser
Om du inte vill fortsätta använda resurserna som skapats i den här artikeln tar du bort resurs gruppen som du skapade här för att undvika avgifter.
Viktigt
Att ta bort en resursgrupp kan inte ångras. Resurs gruppen och alla resurser i den tas bort permanent. Var noga så att du inte tar bort fel resursgrupp eller resurser av misstag. Om du har skapat resurserna för den här artikeln i en resurs grupp som innehåller andra resurser som du vill behålla, tar du bort varje resurs separat från dess respektive fönster i stället för att ta bort resurs gruppen.
- Logga in på Azure Portaloch välj resurs grupper.
- I rutan Filtrera efter namn anger du namnet på din resurs grupp.
- I listan resultat väljer du resurs gruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resurs gruppen som ska bekräftas och välj ta bort.
Efter en liten stund tas resurs gruppen och alla dess resurser bort.
Nästa steg
I den här självstudien har du skapat App Configuration nyckel som refererar till ett värde som lagras i Key Vault. Fortsätt till nästa självstudie om du vill lära dig hur du använder funktionsflaggor i ditt Java Spring-program.