Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här självstudien använder du Azure App Configuration Service tillsammans med Azure Key Vault. Appkonfiguration och Key Vault är kompletterande tjänster som används sida vid sida i de flesta programdistributioner.
Ditt program kan använda appkonfigurationsklientprovidern för att hämta Key Vault-referenser, precis som för andra nycklar som lagras i App Configuration. När du lägger till en Key Vault-referens till App Configuration skapar App Configuration en nyckel som refererar till värdet som lagras i Key Vault. Värdet som App Configuration lagrar är inte ett Key Vault-värde eller autentiseringsuppgifter. I stället är det en URI som refererar till värdet i Key Vault. Eftersom klientprovidern identifierar nyckeln som en Key Vault-referens använder den Key Vault för att hämta dess värde.
Ditt program ansvarar för att autentiseras korrekt till 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. Det bygger på webbappen som introducerades i ASP.NET Core-snabbstarten som anges bland förhandskraven. Slutför den snabbstarten innan du fortsätter.
Du kan använda valfri kodredigerare för att utföra stegen i den här självstudien. Visual Studio Code är till exempel en plattformsoberoende kodredigerare som är tillgänglig för operativsystemen Windows, macOS och Linux.
I den här handledningen kommer du att:
- Skapa en appkonfigurationsnyckel 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 ASP.NET Core-webbprogram.
Förutsättningar
Slutför snabbstarten Skapa en ASP.NET Core-app med App Configuration .
Skapa ett nyckelvalv
Gå till Azure-portalen och välj sedan Skapa en resurs.
Ange Key Vault i sökrutan. I resultatlistan väljer du Key Vault.
På sidan Key Vault väljer du Skapa.
På sidan Skapa ett nyckelvalv anger du följande information:
- För Prenumeration: Välj en prenumeration.
- För Resursgrupp: Ange namnet på en befintlig resursgrupp eller välj Skapa ny och ange ett resursgruppsnamn.
- För Key Vault-namn: Ange ett unikt namn.
- För Region: Välj en plats.
Använd standardvärdena för de andra alternativen.
Välj Förhandsgranska + skapa.
När systemet har verifierat och visar dina indata väljer du Skapa.
I det här läget ä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 testa hämtningen av Key Vault i din app lägger du först till en hemlighet i valvet genom att utföra följande steg. Hemligheten som du lägger till kallas Meddelande och dess värde är "Hello from Key Vault".
I resursmenyn för nyckelvalvet, välj Objekt> Hemligheter.
Välj Generera/Importera.
I dialogrutan Skapa en hemlighet anger du följande värden:
- För uppladdningsalternativ: Ange Manuell.
- För Namn: Ange meddelande.
- För Hemligt värde: Ange Hello från Key Vault.
Använd standardvärdena för de andra alternativen.
Välj Skapa.
Lägga till en Key Vault-referens till App Configuration
Logga in på Azure-portalen. Välj Alla resurser och välj sedan appkonfigurationsarkivet som du skapar i snabbstarten.
Välj Konfigurationsutforskaren.
Välj Skapa>nyckelvalvreferens och ange sedan följande värden:
- För Nyckel: Ange TestApp:Settings:KeyVaultMessage.
- För Etikett: Lämna värdet tomt.
- För Prenumeration, Resursgrupp och Nyckelvalv: Ange de värden som du använder när du skapade nyckelvalvet tidigare i den här självstudien.
- För Hemlighet: Välj hemligheten med namnet Meddelande som du skapar i föregående avsnitt.
Uppdatera koden så att den använder en Key Vault-referens
Gå till mappen som innehåller det ASP.NET Core-webbappsprojekt som du skapade i snabbstarten.
Kör följande kommando i en kommandotolk. Det här kommandot lägger till NuGet-paketreferensen
Azure.Identityi projektfilen eller uppdaterar den.dotnet add package Azure.IdentityÖppna Program.cs.
usingI avsnittet direktiv lägger du till följande rad för att importera typernaAzure.Identityfrån namnområdet:using Azure.Identity;I Program.cs ersätter du anropet
AddAzureAppConfigurationtill metoden med anropet i följande kod. Det uppdaterade anropet innehåller alternativetConfigureKeyVault. Det här alternativet använderSetCredentialmetoden för att skicka de autentiseringsuppgifter som behövs för att autentisera med ditt nyckelvalv.var builder = WebApplication.CreateBuilder(args); // Retrieve the App Configuration endpoint. string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration") // Load the configuration from App Configuration. builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(new Uri(endpoint), new DefaultAzureCredential()); options.ConfigureKeyVault(keyVaultOptions => { keyVaultOptions.SetCredential(new DefaultAzureCredential()); }); });Dricks
Om du har flera nyckelvalv använder systemet samma autentiseringsuppgifter för alla. Om dina nyckelvalv kräver olika autentiseringsuppgifter kan du ange dem med hjälp
RegisteravSetSecretResolverklassens metoder ellerAzureAppConfigurationKeyVaultOptions.Om du vill komma åt värdena för Key Vault-referenser i koden går du till mappen Sidor i projektet. Öppna Index.cshtml och ersätt innehållet med följande kod. Koden i föregående block initierar appkonfigurationsanslutningen och konfigurerar Key Vault-anslutningen. I Index.cshtml kan du därför komma åt värdena för Key Vault-referenser på samma sätt som du kommer åt värdena för vanliga appkonfigurationsnycklar.
@page @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <style> body { background-color: @Configuration["TestApp:Settings:BackgroundColor"] } h1 { color: @Configuration["TestApp:Settings:FontColor"]; font-size: @Configuration["TestApp:Settings:FontSize"]px; } </style> <h1>@Configuration["TestApp:Settings:Message"] and @Configuration["TestApp:Settings:KeyVaultMessage"]</h1>Den här koden kommer åt värdet för Key Vault-referensen
TestApp:Settings:KeyVaultMessagepå samma sätt som den kommer åt konfigurationsvärdetTestApp:Settings:Messageför .
Ge din app åtkomst till Key Vault
App-konfiguration har inte tillgång till ditt nyckelvalv. I stället läser appen direkt från Key Vault, så du måste ge din app åtkomst till hemligheterna i nyckelvalvet. På så sätt är hemligheterna alltid kvar i din app. Du kan använda en key vault-åtkomstprincip eller rollbaserad åtkomstkontroll i Azure för att bevilja åtkomsten.
Koden i den här självstudien använder DefaultAzureCredential-klassen för autentisering. Den här aggregerade tokenautentiseringsuppgiften provar automatiskt flera typer av autentiseringsuppgifter, till exempel EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredentialoch VisualStudioCredential. Mer information finns i StandardAzureCredential-klass.
Du kan ersätta DefaultAzureCredential med valfri explicit typ av autentiseringsuppgifter. Men när du använder DefaultAzureCredentialkan koden köras i lokala miljöer och Azure-miljöer. När din app till exempel körs i Azure DefaultAzureCredential använder ManagedIdentityCredential. Men när du använder Visual Studio för lokal utveckling återgår du automatiskt till SharedTokenCacheCredential eller VisualStudioCredential.
Du kan också ange AZURE_TENANT_IDmiljövariablerna , AZURE_CLIENT_IDoch AZURE_CLIENT_SECRET . När du genomför detta DefaultAzureCredential använder du dessa variabler och EnvironmentCredential för att autentisera med ditt nyckelvalv.
När du har distribuerat din app till en Azure-tjänst med hanterad identitet aktiverad, till exempel Azure App Service, Azure Kubernetes Service eller Azure Container Instance, beviljar du den hanterade identiteten för Azure-tjänsten behörighet att komma åt ditt nyckelvalv.
DefaultAzureCredential används ManagedIdentityCredential automatiskt när din app körs i Azure. Du kan använda samma hanterade identitet för att autentisera med både App Configuration och Key Vault. Mer information finns i Använda hanterade identiteter för att komma åt App Configuration.
Skapa och köra appen lokalt
Om du vill skapa appen med hjälp av .NET CLI kör du följande kommando i en kommandotolk:
dotnet buildNär bygget är klart använder du följande kommando för att köra webbappen lokalt:
dotnet runI kommandots
dotnet runutdata hittar du en URL som webbappen lyssnar på, till exempelhttp://localhost:5292. Öppna en webbläsare och gå till webbadressen.
Texten på webbsidan innehåller följande komponenter:
- Värdet som är associerat med
TestApp:Settings:Messagenyckeln i appkonfigurationsarkivet - Värdet för meddelandehemligheten som lagras i nyckelvalvet
- Värdet som är associerat med
Rensa resurser
Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.
Viktigt!
Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.
Efter en liten stund tas resursgruppen och alla dess resurser bort.