In deze quickstart wordt de Azure Identity-bibliotheek met Azure PowerShell gebruikt om de gebruiker te verifiëren bij Azure Services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun oproepen te verifiëren: zie De client verifiëren met de Azure Identity-clientbibliotheek (Engelstalig) voor meer informatie.
Aanmelden bij Azure
Voer de opdracht Connect-AzAccount
uit.
Connect-AzAccount
Als de PowerShell uw standaardbrowser kan openen, doet dit en laadt u een Azure-aanmeldingspagina.
Als dat niet het geval is, opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in de terminal.
Meldt u zich in de browser aan met uw accountreferenties.
Toegang verlenen tot uw sleutelkluis
Als u uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure CLI-opdracht az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Als u uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure PowerShell-cmdlet New-AzRoleAssignment.
New-AzRoleAssignment -ObjectId "<app-id>" -RoleDefinitionName "Key Vault Secrets User" -Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Vervang , <subscription-id>
<resource-group-name>
en <your-unique-keyvault-name>
door <app-id>
uw werkelijke waarden. <app-id>
is de toepassings-id (client) van uw geregistreerde toepassing in Microsoft Entra.
Nieuwe .NET-console-app maken
Voer in een opdrachtshell de volgende opdracht uit om een project te maken met de naam key-vault-console-app
:
dotnet new console --name key-vault-console-app
Ga naar de map van zojuist gemaakte key-vault-console-app en voer de volgende opdracht uit om het project te bouwen:
dotnet build
De build-uitvoer mag geen waarschuwingen of fouten bevatten.
Build succeeded.
0 Warning(s)
0 Error(s)
De pakketten installeren
Installeer vanuit de opdrachtshell de Azure Key Vault-clientbibliotheek voor geheimen voor .NET:
dotnet add package Azure.Security.KeyVault.Secrets
Voor deze quickstart moet u ook de Azure Identity-clientbibliotheek installeren:
dotnet add package Azure.Identity
Omgevingsvariabelen instellen
In deze applicatie wordt de naam van de sleutelkluis gebruikt als een omgevingsvariabele met de naam KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS of Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Objectmodel
Met de Azure Key Vault-clientbibliotheek voor geheimen voor .NET kunt u geheimen beheren. In de sectie Codevoorbeelden ziet u hoe u een client maakt, een geheim instelt, een geheim ophaalt en een geheim verwijdert.
Codevoorbeelden
Voeg -instructies toe
Voeg de volgende instructies toe aan het begin van Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Een client verifiëren en maken
Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Het gebruik van de DefaultAzureCredential-klasse die wordt geleverd door de Azure Identity-clientbibliotheek is de aanbevolen methode voor het implementeren van verbindingen zonder wachtwoord met Azure-services in uw code. DefaultAzureCredential
ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.
In deze quickstart DefaultAzureCredential
verifieert u zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing in Azure wordt geïmplementeerd, kan dezelfde DefaultAzureCredential
code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, virtuele machine of andere services. Zie Overzicht van beheerde identiteiten voor meer informatie.
In dit voorbeeld wordt de naam van uw sleutelkluis uitgebreid naar de sleutelkluis-URI, in de indeling https://<your-key-vault-name>.vault.azure.net
. Zie Gids voor ontwikkelaars voor meer informatie over het verifiëren van een sleutelkluis.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Een geheim opslaan
Nu de console-app is geverifieerd, voegt u een geheim toe aan de sleutelkluis. Gebruik voor deze taak de methode SetSecretAsync.
De eerste parameter van de methode accepteert een naam voor het geheim. In dit voorbeeld slaat de variabele secretName
de tekenreeks 'mySecret' op.
De tweede parameter van de methode accepteert een waarde voor het geheim. In dit voorbeeld wordt het geheim door de gebruiker ingevoerd via de opdrachtregel en opgeslagen in de variabele secretValue
.
await client.SetSecretAsync(secretName, secretValue);
Notitie
Als er een geheime naam bestaat, wordt met de code een nieuwe versie van dat geheim gemaakt.
Een geheim ophalen
U kunt nu de eerder ingestelde waarde ophalen met de methode GetSecretAsync.
var secret = await client.GetSecretAsync(secretName);
Uw geheim wordt nu opgeslagen als secret.Value
.
Een geheim verwijderen
Ten slotte gaan we het geheim uit de sleutelkluis verwijderen met de methoden StartDeleteSecretAsync en PurgeDeletedSecretAsync.
var operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();
await client.PurgeDeletedSecretAsync(secretName);
Voorbeeldcode
Wijzig de .NET-console-app om te communiceren met Key Vault door de volgende stappen uit te voeren:
Vervang de code in Program.cs door de volgende code:
using System;
using System.Threading.Tasks;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
namespace key_vault_console_app
{
class Program
{
static async Task Main(string[] args)
{
const string secretName = "mySecret";
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Console.Write("Input the value of your secret > ");
var secretValue = Console.ReadLine();
Console.Write($"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...");
await client.SetSecretAsync(secretName, secretValue);
Console.WriteLine(" done.");
Console.WriteLine("Forgetting your secret.");
secretValue = string.Empty;
Console.WriteLine($"Your secret is '{secretValue}'.");
Console.WriteLine($"Retrieving your secret from {keyVaultName}.");
var secret = await client.GetSecretAsync(secretName);
Console.WriteLine($"Your secret is '{secret.Value.Value}'.");
Console.Write($"Deleting your secret from {keyVaultName} ...");
DeleteSecretOperation operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the secret.
await operation.WaitForCompletionAsync();
Console.WriteLine(" done.");
Console.Write($"Purging your secret from {keyVaultName} ...");
await client.PurgeDeletedSecretAsync(secretName);
Console.WriteLine(" done.");
}
}
}
Testen en verifiëren
Voer de volgende opdracht uit om de app uit te voeren.
dotnet run
Voer een geheime waarde in wanneer u hierom wordt gevraagd. Bijvoorbeeld mySecretPassword (mijn geheime wachtwoord).
Er verschijnt een variant van de volgende uitvoer:
Input the value of your secret > mySecretPassword
Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <your-unique-keyvault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <your-unique-keyvault-name> ... done.
Purging your secret from <your-unique-keyvault-name> ... done.
Volgende stappen
Zie de volgende artikelen voor meer informatie over Key Vault en hoe u Key Vault integreert met uw apps: