.NET-klienten
Läs hemligheter från ett valv i .NET-kod med Stackships Secrets-klient.
Kräver: secretvault/readSecrets
Kod kan läsa ett valv direkt med .NET-klienten i stället för att få värdena vid start. Klienten läser hemligheter; den skapar, ändrar eller raderar dem inte — använd portalen, CLI:t eller API:t för det.
Lägg till paketen
Stackship.Secrets.Client— klienten. Den riktar sig mot .NET Standard 2.1, .NET 8 och .NET 10.Stackship.Identity.Client— autentiseringsuppgifterna som klienten loggar in med. Stödet för dem i Secrets-klienten finns på .NET 10.
Läs en hemlighet
Använd valvtjänstens adress, https://secrets.apps.example.com, och valvets namn:
using Stackship.Identity.Client;
using Stackship.Secrets.Client;
var client = new SecretClient(
"https://secrets.apps.example.com",
"my-vault",
new DefaultStackshipCredential());
var secret = await client.GetSecretAsync("api-key"); // null när hemligheten inte finns
var older = await client.GetSecretVersionAsync("api-key", 2);En SecretValue har Name, Value, Version, ContentType och CreatedAt. Värdena cachas i
processen i 300 sekunder som standard (konstruktorns sista argument).
Hur klienten loggar in
DefaultStackshipCredential väljer den första autentiseringsuppgift som miljön ger:
- en managed identity, när
STACKSHIP_IDENTITY_RESOURCE_UIDochSTACKSHIP_IDENTITY_TOKEN_ENDPOINTär satta — plattformen sätter dem i app- och funktionscontainrar; - ett tjänstekonto, från
STACKSHIP_CLIENT_ID,STACKSHIP_CLIENT_SECRETochSTACKSHIP_TOKEN_ENDPOINT(och eventuelltSTACKSHIP_AUDIENCE).
Vilken det än blir behöver den Secrets Reader på valvet — se Ge en arbetslast åtkomst.
Ladda hemligheter i konfigurationen
AddStackshipSecrets lägger till namngivna hemligheter i .NET-konfigurationen vid start. Ett --
i hemlighetens namn blir : i konfigurationsnyckeln, så hemligheten ConnectionStrings--Default
läses som Configuration["ConnectionStrings:Default"].
Den använder inte DefaultStackshipCredential: ge den en token själv, via TokenProvider (eller en
fast BearerToken):
var credential = new DefaultStackshipCredential();
builder.Configuration.AddStackshipSecrets(options =>
{
options.BaseUrl = "https://secrets.apps.example.com";
options.VaultName = "my-vault";
options.TokenProvider = async ct => (await credential.GetTokenAsync(ct)).Token;
}, "ConnectionStrings--Default", "ApiKeys--Stripe");Viktigt
En hemlighet som inte kan läsas — ingen token, ingen åtkomst, ingen sådan hemlighet — hoppas över utan fel, så en saknad token lämnar konfigurationen tyst tom. Kontrollera själv att nycklarna finns.
Med ReloadOnInterval = true läses hemligheterna in igen var ReloadIntervalSeconds:e sekund
(300 som standard). Varje inläsning ersätter de tidigare värdena, så en hemlighet som inte går att
läsa vid en ny inläsning saknas i konfigurationen tills en senare inläsning lyckas.