Hinzufügen von Key Vault zu Ihrer Webanwendung mithilfe der Option „Verbundene Dienste“ in Visual StudioAdd Key Vault to your web application by using Visual Studio Connected Services

In diesem Tutorial erfahren Sie, wie Sie auf einfache Weise alles hinzufügen, was Sie zum Verwalten Ihrer Geheimnisse mit Azure Key Vault für Webprojekte in Visual Studio benötigen – ganz unabhängig davon, ob Sie ASP.NET Core oder einen beliebigen Typ von ASP.NET-Projekt verwenden.In this tutorial, you will learn how to easily add everything you need to start using Azure Key Vault to manage your secrets for web projects in Visual Studio, whether you are using ASP.NET Core or any type of ASP.NET project. Mit dem Feature „Verbundene Dienste“ in Visual Studio werden alle NuGet-Pakete und Konfigurationseinstellungen, die für eine Verbindung mit Key Vault in Azure erforderlich sind, von Visual Studio automatisch hinzugefügt.By using the Connected Services feature in Visual Studio, you can have Visual Studio automatically add all the NuGet packages and configuration settings you need to connect to Key Vault in Azure.

Ausführliche Informationen zu den Änderungen, die durch verbundene Dienste in Ihrem Projekt durchgeführt werden, um Key Vault zu aktivieren, finden Sie unter Verbundener Key Vault-Dienst – Auswirkungen auf mein ASP.NET 4.7.1-Projekt bzw. unter Verbundener Key Vault-Dienst – Auswirkungen auf mein ASP.NET Core-Projekt.For details on the changes that Connected Services makes in your project to enable Key Vault, see Key Vault Connected Service - What happened to my ASP.NET 4.7.1 project or Key Vault Connected Service - What happened to my ASP.NET Core project.

VoraussetzungenPrerequisites

  • Ein Azure-Abonnement.An Azure subscription. Falls Sie kein Abonnement besitzen, können Sie sich für ein kostenloses Konto registrieren.If you don't have a subscription, sign up for a free account.
  • Visual Studio 2019, Version 16.3 oder höher. Jetzt herunterladenVisual Studio 2019 version 16.3 or later Download it now.

Hinzufügen von Key Vault-Unterstützung zu Ihrem ProjektAdd Key Vault support to your project

Vergewissern Sie sich zunächst, dass Sie bei Visual Studio angemeldet sind.Before you begin, make sure that you're signed into Visual Studio. Melden Sie sich mit dem gleichen Konto an, das Sie auch für Ihr Azure-Abonnement verwenden.Sign in with the same account that you use for your Azure subscription. Öffnen Sie dann ein Webprojekt (ASP.NET 4.7.1 oder höher oder ASP.NET Core 2.0), und führen Sie die folgenden Schritte aus:Then open an ASP.NET 4.7.1 or later, or ASP.NET Core 2.0 web project, and do the follow steps:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, dem Sie die Key Vault-Unterstützung hinzufügen möchten, und klicken Sie dann auf Hinzufügen > Verbundener Dienst > Hinzufügen.In Solution Explorer, right-click the project that you want to add the Key Vault support to, and choose Add > Connected Service > Add. Die Seite „Verbundener Dienst“ wird mit den Diensten angezeigt, die Sie dem Projekt hinzufügen können.The Connected Service page appears with services you can add to your project.

  2. Wählen Sie im Menü der verfügbaren Dienste Azure Key Vault aus, und klicken Sie auf Weiter.In the menu of available services, choose Azure Key Vault and click Next.

    Auswählen von „Azure Key Vault“

  3. Wählen Sie das zu verwendende Abonnement und anschließend eine bereits vorhandene Key Vault-Instanz aus, und klicken Sie auf Fertig stellen.Select the subscription you want to use, and then choose a existing Key Vault and click Finish.

    Wählen Sie Ihr Abonnement aus.

Nun wird die Verbindung mit Key Vault hergestellt, und Sie können auf Ihre Geheimnisse im Code zugreifen.Now, connection to Key Vault is established and you can access your secrets in code. Die nächsten Schritte unterscheiden sich abhängig davon, ob Sie ASP.NET 4.7.1 oder ASP.NET Core verwenden.The next steps are different depending on whether you are using ASP.NET 4.7.1 or ASP.NET Core.

Zugreifen auf Ihre Geheimnisse in Code (ASP.NET Core)Access your secrets in code (ASP.NET Core)

  1. Öffnen Sie eine der Seitendateien (z. B. Index.cshtml.cs), und schreiben Sie den folgenden Code:Open one of the page files, such as Index.cshtml.cs and write the following code:
    1. Schließen Sie mithilfe der folgenden using-Anweisung einen Verweis auf Microsoft.Extensions.Configuration ein:Include a reference to Microsoft.Extensions.Configuration by this using directive:

      using Microsoft.Extensions.Configuration;
      
    2. Fügen Sie die Konfigurationsvariable hinzu.Add the configuration variable.

      private static IConfiguration _configuration;
      
    3. Fügen Sie diesen Konstruktor hinzu, oder ersetzen Sie den vorhandenen Konstruktor durch Folgendes:Add this constructor or replace the existing constructor with this:

      public IndexModel(IConfiguration configuration)
      {
          _configuration = configuration;
      }
      
    4. Aktualisieren Sie die OnGet-Methode.Update the OnGet method. Ersetzen Sie den hier gezeigten Platzhalterwert durch den Namen des Geheimnisses, den Sie mit den oben angegebenen Befehlen erstellt haben.Update the placeholder value shown here with the secret name you created in the above commands.

      public void OnGet()
      {
          ViewData["Message"] = "My key val = " + _configuration["<YourSecretNameStoredInKeyVault>"];
      }
      
    5. Um den Wert zur Laufzeit zu bestätigen, fügen Sie Code hinzu, um ViewData["Message"] für die CSHTML-Datei anzuzeigen, um den geheimen Schlüssel in einer Nachricht anzuzeigen.To confirm the value at runtime, add code to display ViewData["Message"] to the .cshtml file to display the secret in a message.

          <p>@ViewData["Message"]</p>
      

Sie können die App lokal ausführen, um zu überprüfen, ob das Geheimnis erfolgreich aus dem Key Vault abgerufen wurde.You can run the app locally to verify that the secret is obtained successfully from the Key Vault.

Zugreifen auf Ihre Geheimnisse (ASP.NET)Access your secrets (ASP.NET)

Sie können die Konfiguration so einrichten, dass die Datei „web. config“ im appSettings-Element einen Dummywert enthält, der zur Laufzeit durch den Wert TRUE ersetzt wird.You can set up the configuration so that the web.config file has a dummy value in the appSettings element that is replaced by the true value at runtime. Sie können dann über die ConfigurationManager.AppSettings-Datenstruktur darauf zugreifen.You can then access this via the ConfigurationManager.AppSettings data structure.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt und dann auf Sie „NuGet-Pakete verwalten“.In Solution Explorer, right-click on your project, and select Manage NuGet Packages. Suchen Sie in der Registerkarte „Durchsuchen“ nach Microsoft.Configuration.ConfigurationBuilders.Azure, und installieren Sie die Version.In the Browse tab, locate and install Microsoft.Configuration.ConfigurationBuilders.Azure

  2. Öffnen Sie die web.config-Datei, und schreiben Sie den folgenden Code:Open your web.config file, and write the following code:

    1. Fügen Sie configSections und configBuilders hinzu:Add configSections and configBuilders:
       <configSections>
          <section
              name="configBuilders"
              type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
              restartOnExternalChanges="false"
              requirePermission="false" />
       </configSections>
       <configBuilders>
          <builders>
          <add
                  name="AzureKeyVault"
                  vaultName="vaultname"
                  type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=1.0.0.0, Culture=neutral"
                  vaultUri="https://vaultname.vault.azure.net" />
          </builders>
       </configBuilders>
      
    2. Suchen Sie das appSettings-Tag, fügen Sie ein Attribut configBuilders="AzureKeyVault" hinzu, und fügen Sie eine Zeile hinzu:Find the appSettings tag, add an attribute configBuilders="AzureKeyVault", and add a line:
       <add key="<secretNameInYourKeyVault>" value="dummy"/>
      
  3. Bearbeiten Sie die About-Methode in HomeController.cs, um den Wert zur Bestätigung anzuzeigen.Edit the About method in HomeController.cs, to display the value for confirmation.

    public ActionResult About()
    {
        ViewBag.Message = "Key vault value = " + ConfigurationManager.AppSettings["<secretNameInYourKeyVault>"];
    }
    
  4. Führen Sie die App lokal unter dem Debugger aus, wechseln Sie zur Registerkarte Info, und überprüfen Sie, ob der Wert aus dem Key Vault angezeigt wird.Run the app locally under the debugger, switch to the About tab, and verify that the value from the Key Vault is displayed.

ProblembehandlungTroubleshooting

Wenn Ihr Key Vault in einem anderen Microsoft-Konto als dem ausgeführt wird, mit dem Sie bei Visual Studio angemeldet sind (wenn z.B. der Key Vault in Ihrem Geschäftskonto ausgeführt wird, für Visual Studio jedoch Ihr privates Konto verwendet wird), wird in der Datei „Program.cs“ die Fehlermeldung angezeigt, dass Visual Studio keinen Zugriff auf den Key Vault hat.If your Key Vault is running on an different Microsoft account than the one you're logged in to Visual Studio (for example, the Key Vault is running on your work account, but Visual Studio is using your private account) you get an error in your Program.cs file, that Visual Studio can't get access to the Key Vault. So beheben Sie dieses Problem:To fix this issue:

  1. Wechseln Sie zum Azure-Portal, und öffnen Sie den Schlüsseltresor.Go to the Azure portal and open your Key Vault.

  2. Wählen Sie Zugriffsrichtlinien und dann Zugriffsrichtlinie hinzufügen, und wählen Sie das Konto, bei dem Sie angemeldet sind, als Prinzipal aus.Choose Access policies, then Add Access Policy, and choose the account you are logged in with as Principal.

  3. Wählen Sie in Visual Studio Datei > Kontoeinstellungen aus.In Visual Studio, choose File > Account Settings. Wählen Sie Konto hinzufügen im Abschnitt Alle Konten aus.Select Add an account from the All account section. Melden Sie sich mit dem Konto an, das Sie als Prinzipal der Zugriffsrichtlinie ausgewählt haben.Sign in with the account you have chosen as Principal of your access policy.

  4. Wählen Sie Tools > Optionen aus, und suchen Sie Azure-Dienstauthentifizierung.Choose Tools > Options, and look for Azure Service Authentication. Wählen Sie dann das Konto aus, das Sie soeben Visual Studio hinzugefügt haben.Then select the account you just added to Visual Studio.

Wenn Sie nun die Anwendung debuggen, stellt Visual Studio eine Verbindung mit dem Konto her, in dem sich Ihr Key Vault befindet.Now, when you debug your application, Visual Studio connects to the account your Key Vault is located on.

Ändern des ASP.NET Core-ProjektsHow your ASP.NET Core project is modified

In diesem Abschnitt werden die genauen Änderungen identifiziert, die an einem ASP.NET-Projekt vorgenommen werden, wenn der verbundene Key Vault-Dienst mit Visual Studio hinzugefügt wird.This section identifies the exact changes made to an ASP.NET project when adding the Key Vault connected service using Visual Studio.

Hinzugefügte Verweise für ASP.NET CoreAdded references for ASP.NET Core

Betrifft die .NET-Verweise der Projektdatei und NuGet-Verweise.Affects the project file .NET references and NuGet package references.

typeType VerweisReference
NuGetNuGet Microsoft.AspNetCore.AzureKeyVault.HostingStartupMicrosoft.AspNetCore.AzureKeyVault.HostingStartup

Hinzugefügte Dateien für ASP.NET CoreAdded files for ASP.NET Core

  • ConnectedService.json wurde hinzugefügt. Diese Datei enthält Informationen zum Anbieter des verbundenen Diensts und zur Version sowie einen Link zur Dokumentation.ConnectedService.json added, which records some information about the Connected Service provider, version, and a link the documentation.

Änderungen an der Projektdatei für ASP.NET CoreProject file changes for ASP.NET Core

  • Die Elementgruppe (ItemGroup) der verbundenen Dienste und die Datei ConnectedServices.json wurden hinzugefügt.Added the Connected Services ItemGroup and ConnectedServices.json file.

Änderungen an „launchsettings.json“ für ASP.NET Corelaunchsettings.json changes for ASP.NET Core

  • Dem IIS Express-Profil und dem Profil, das Ihrem Webprojektnamen entspricht, wurde die folgende Umgebungsvariable hinzugefügt:Added the following environment variable entries to both the IIS Express profile and the profile that matches your web project name:

      "environmentVariables": {
        "ASPNETCORE_HOSTINGSTARTUP__KEYVAULT__CONFIGURATIONENABLED": "true",
        "ASPNETCORE_HOSTINGSTARTUP__KEYVAULT__CONFIGURATIONVAULT": "<your keyvault URL>"
      }
    

Änderungen in Azure für ASP.NET CoreChanges on Azure for ASP.NET Core

  • Eine Ressourcengruppe wurde erstellt (oder eine bereits vorhandene wurde verwendet).Created a resource group (or used an existing one).
  • Eine Key Vault-Instanz wurde in der angegebenen Ressourcengruppe erstellt.Created a Key Vault in the specified resource group.

Ändern des ASP.NET Framework-ProjektsHow your ASP.NET Framework project is modified

In diesem Abschnitt werden die genauen Änderungen identifiziert, die an einem ASP.NET-Projekt vorgenommen werden, wenn der verbundene Key Vault-Dienst mit Visual Studio hinzugefügt wird.This section identifies the exact changes made to an ASP.NET project when adding the Key Vault connected service using Visual Studio.

Hinzugefügte Verweise für ASP.NET FrameworkAdded references for ASP.NET Framework

Betrifft die Projektdatei (.NET-Verweise) und packages.config (NuGet-Verweise).Affects the project file .NET references and packages.config (NuGet references).

typeType VerweisReference
.NET; NuGet.NET; NuGet Azure.IdentityAzure.Identity
.NET; NuGet.NET; NuGet Azure.Security.KeyVault.KeysAzure.Security.KeyVault.Keys
.NET; NuGet.NET; NuGet Azure.Security.KeyVault.SecretsAzure.Security.KeyVault.Secrets

Wichtig

Standardmäßig ist Azure.Identity 1.1.1 installiert. Diese Implementierung unterstützt keine Visual Studio-Anmeldeinformationen.By default Azure.Identity 1.1.1 is installed, which does not support Visual Studio Credential. Sie können den Paketverweis manuell auf Version 1.2 oder höher aktualisieren, um Visual Studio-Anmeldeinformationen zu verwenden.You can update package reference manually to 1.2+ use Visual Studio Credential.

Hinzugefügte Dateien für ASP.NET FrameworkAdded files for ASP.NET Framework

  • ConnectedService.json wurde hinzugefügt. Diese Datei enthält Informationen zum Anbieter des verbundenen Diensts und zur Version sowie einen Link zur Dokumentation.ConnectedService.json added, which records some information about the Connected Service provider, version, and a link to the documentation.

Änderungen an der Projektdatei für ASP.NET FrameworkProject file changes for ASP.NET Framework

  • Die Elementgruppe des verbundenen Diensts und die Datei „ConnectedServices.json“ wurden hinzugefügt.Added the Connected Services ItemGroup and ConnectedServices.json file.
  • Verweise auf die .NET-Assemblys werden im Abschnitt Hinzugefügte Verweise beschrieben.References to the .NET assemblies described in the Added references section.

Nächste SchritteNext steps

Wenn Sie dieses Tutorial befolgt haben, sind Ihre Key Vault-Berechtigungen so eingerichtet, dass sie mit Ihrem eigenen Azure-Abonnement ausgeführt werden, aber das ist für ein Produktionsszenario möglicherweise nicht wünschenswert.If you followed this tutorial, your Key Vault permissions are set up to run with your own Azure subscription, but that might not be desirable for a production scenario. Sie können eine verwaltete Identität erstellen, um Key Vault-Zugriff für Ihre App zu verwalten.You can create a managed identity to manage Key Vault access for your app. Weitere Informationen finden Sie unter Authentifizieren bei Key Vault und Zuweisen einer Key Vault-Zugriffsrichtlinie.See How to Authenticate to Key Vault and Assign a Key Vault access policy.

Weitere Informationen zur Key Vault-Entwicklung finden Sie im Key Vault-Entwicklerhandbuch.Learn more about Key Vault development by reading the Key Vault Developer's Guide.