Hoppa till innehållet
Stackship-dokumentation English

HemligheterAnvändareMaskinöversatt

.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:

csharp
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:

  1. en managed identity, när STACKSHIP_IDENTITY_RESOURCE_UID och STACKSHIP_IDENTITY_TOKEN_ENDPOINT är satta — plattformen sätter dem i app- och funktionscontainrar;
  2. ett tjänstekonto, från STACKSHIP_CLIENT_ID, STACKSHIP_CLIENT_SECRET och STACKSHIP_TOKEN_ENDPOINT (och eventuellt STACKSHIP_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):

csharp
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.