Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tajný klíč klienta je řetězcová hodnota, kterou vaše aplikace používá k prokázání identity při vyžádání tokenů z Microsoft identity platform. Microsoft. Identity.Web podporuje tajné kódy klienta jako jeden z několika typů přihlašovacích údajů pro důvěrné klientské aplikace.
Důležité
Tajné kódy klienta by se měly používat jenom ve vývojových a testovacích prostředích. Pro produkční úlohy použijte certifikáty nebo přihlašovací údaje bez certifikátů , jako jsou spravované identity nebo přihlašovací údaje federované identity. Tajné kódy klientů jsou jednodušší než přihlašovací údaje založené na certifikátech a není možné je vymezit na konkrétní operace.
Volba typu přihlašovacích údajů
Důvěrné klientské aplikace potřebují přihlašovací údaje k ověření v Microsoft identity platform. Microsoft. Identity.Web podporuje následující typy přihlašovacích údajů prostřednictvím oddílu konfigurace ClientCredentials:
| Typ přihlašovacích údajů | Doporučené prostředí | Úroveň zabezpečení |
|---|---|---|
| Tajný klíč klienta | Vývoj, testování | Nízká úroveň |
| Certifikát | Příprava, produkční prostředí | Vysoko |
| Spravovaná identita | Azure hostované produkční prostředí | Nejvyšší |
| Federovaná identita | CI/CD, Kubernetes | Vysoko |
Tajné kódy klienta jsou jednoduché řetězce zaregistrované ve vaší aplikaci v Microsoft Entra ID. I když jsou nejjednodušším typem přihlašovacích údajů, který je potřeba nastavit, mají také významná omezení zabezpečení:
- Můžou být náhodně vystavené ve zdrojovém kódu, protokolech nebo konfiguračních souborech.
- Mají datum vypršení platnosti a musí se ručně otočit.
- Neposkytují kryptografický důkaz o identitě volajícího nad rámec vlastnictví tajného klíče.
Konfigurace tajného klíče klienta v appsettings.json
Pokud chcete nakonfigurovat tajný klíč klienta, přidejte ClientCredentials pole do AzureAd části souboru appsettings.json :
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "YOUR_TENANT_ID",
"ClientId": "YOUR_CLIENT_ID",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "YOUR_SECRET_VALUE"
}
]
}
}
Pole ClientCredentials podporuje více položek. Microsoft.Identity.Web zkouší každý ověřovací údaj postupně, dokud jeden neuspěje, což je užitečné pro scénáře obměny tajemství.
Výstraha
Nikdy do správy zdrojového kódu nepokládejte skutečné tajné hodnoty. Zástupný YOUR_SECRET_VALUE symbol v předchozím příkladu musí být nahrazen odkazem na zabezpečené úložiště, jak je popsáno v následujících částech.
Ukládání tajných kódů pro vývoj
Tato část popisuje, jak zachovat tajné hodnoty mimo zdrojový kód během místního vývoje.
.NET uživatelská tajemství
Doporučeným přístupem k ukládání tajných kódů během místního vývoje je nástroj Secret Manager. Uživatelská tajemství ukládají citlivá data mimo strom projektu, což brání náhodnému odeslání do verzíovacího systému.
Inicializace tajných kódů uživatele pro váš projekt:
dotnet user-secrets initNastavte hodnotu tajného klíče klienta:
dotnet user-secrets set "AzureAd:ClientCredentials:0:ClientSecret" "your-secret-value"Ověřte, že tajný klíč byl uložen:
dotnet user-secrets list
Uživatelské tajemství se automaticky načítají v prostředí Development při použití WebApplication.CreateBuilder() nebo Host.CreateDefaultBuilder().
Vaše appsettings.json by mělo obsahovat strukturu bez skutečné tajné hodnoty:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "YOUR_TENANT_ID",
"ClientId": "YOUR_CLIENT_ID",
"ClientCredentials": [
{
"SourceType": "ClientSecret"
}
]
}
}
Proměnné prostředí
Proměnné prostředí můžete použít také k poskytnutí tajného klíče klienta. konfigurace .NET automaticky mapuje proměnné prostředí, které používají oddělovač __ (dvojité podtržítko) do hierarchie konfigurace. Nastavte proměnnou pro váš shell:
$env:AzureAd__ClientCredentials__0__ClientSecret = "your-secret-value"
Proměnné prostředí mají přednost před hodnotami v appsettings.json, takže tajná hodnota v konfiguračním souboru může být prázdná nebo vynechána.
Ukládání tajných kódů pro vyšší prostředí
Pro přípravu, kontrolu kvality nebo jakékoli sdílené prostředí použijte Azure Key Vault jako zdroj konfigurace. Tento přístup uchovává tajné kódy mimo konfigurační soubory a proměnné prostředí a současně poskytuje možnosti auditování, zásad přístupu a automatické obměny.
Přidání Azure Key Vault jako zdroje konfigurace
Nainstalujte požadovaný balíček NuGet:
dotnet add package Azure.Extensions.AspNetCore.Configuration.SecretsUložte klientský tajný klíč do Azure Key Vault s názvem, který se mapuje na cestu konfigurace. Jako oddělovač použijte
--(dvojitou pomlčku):az keyvault secret set \ --vault-name "your-keyvault-name" \ --name "AzureAd--ClientCredentials--0--ClientSecret" \ --value "your-secret-value"Přidejte Key Vault jako zdroj konfigurace v
Program.cs. Následující kód zaregistruje Key Vault, aby jeho tajné kódy byly dostupné prostřednictvím standardního konfiguračního rozhraní API:var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddAzureKeyVault( new Uri("https://your-keyvault-name.vault.azure.net/"), new DefaultAzureCredential());
Název tajného kódu Key Vault AzureAd--ClientCredentials--0--ClientSecret se automaticky mapuje na cestu konfigurace AzureAd:ClientCredentials:0:ClientSecret.
Návod
I když používáte Key Vault k uložení tajného klíče klienta, zvažte, jestli by vaše produkční úlohy byly lépe obsluhovány certifikáty nebo spravovanými identitami. Key Vault je užitečný pro sdílené vývojové nebo přípravné prostředí, ale produkční aplikace by měly používat silnější typy přihlašovacích údajů.
Vytvoření tajného klíče klienta na portálu Azure
Pomocí následujícího postupu zaregistrujte tajný klíč klienta pro vaši aplikaci v Microsoft Entra ID:
- Přihlaste se k Centrum pro správu Microsoft Entra.
- Přejděte na Identity>Applications>Registrace aplikací.
- Ze seznamu vyberte aplikaci.
- V nabídce vlevo vyberte Certifikáty a tajné kódy.
- Vyberte kartu Tajné kódy klienta .
- Vyberte Nový tajný klíč klienta.
- V podokně Přidat tajný klíč klienta :
- Zadejte popis tajného klíče (například "Tajný kód pro vývoj").
- Vyberte dobu trvání vypršení platnosti . Mezi dostupné možnosti patří 180 dní, 365 dní, 730 dní nebo vlastní datum.
- Vyberte Přidat.
- Okamžitě zkopírujte hodnotu tajného kódu. Hodnota je zobrazena jen jednou a po opuštění stránky ji nelze znovu zobrazit.
Důležité
Poznamenejte si hodnotu tajného klíče v zabezpečeném umístění ihned po vytvoření. Microsoft Entra ID zobrazí hodnotu pouze v okamžiku vytvoření. Pokud hodnotu ztratíte, musíte vytvořit nový tajný kód.
Správa vypršení platnosti a obměně tajných kódů
Tajné kódy klienta mají maximální životnost a vyprší k datu zadanému během vytváření. Naplánujte obměnu tajných kódů, abyste se vyhnuli výpadkům aplikací.
Monitorování vypršení platnosti
- Na stránce Certifikáty a tajné kódy registrace vaší aplikace zkontrolujte sloupec Konec platnosti.
- Nastavte doporučení Microsoft Entra pro příjem upozornění před vypršením platnosti přihlašovacích údajů.
Strategie rotace
Pomocí pole ClientCredentials můžete podporovat rotaci bez výpadku.
Na portálu Azure vytvořte nový tajný klíč klienta.
Přidejte nový tajný klíč jako další položku v
ClientCredentialspoli. Nejprve umístěte nové tajemství, aby se vyzkoušelo před starým.{ "AzureAd": { "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "[NEW_SECRET_REFERENCE]" }, { "SourceType": "ClientSecret", "ClientSecret": "[OLD_SECRET_REFERENCE]" } ] } }Nasaďte aktualizovanou konfiguraci. Microsoft. Identity.Web se pokusí o první přihlašovací údaje a vrátí se k druhému, pokud se první nezdaří.
Po potvrzení fungování nového tajného kódu odeberte starý tajný klíč z konfigurace i z portálu Azure.
Migrace na produkční autentizační údaje
Před nasazením do produkčního prostředí migrujte z tajných kódů klienta na bezpečnější typ přihlašovacích údajů:
Ověřování pomocí certifikátů
Certifikáty poskytují kryptografickou kontrolu identity a jsou doporučeným typem přihlašovacích údajů pro produkční prostředí. Následující konfigurace načte certifikát z Key Vault:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Podrobný postup najdete v tématu Užívání certifikátů pomocí Microsoft. Identity.Web
Spravovaná identita (bez certifikátů)
U aplikací hostovaných v Azure spravované identity eliminují potřebu úplné správy přihlašovacích údajů. Následující konfigurace používá spravovanou identitu přiřazenou uživatelem:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "YOUR_MANAGED_IDENTITY_CLIENT_ID"
}
]
}
}
Podrobné kroky najdete v tématu Certificateless authentication with Microsoft. Identity.Web
Kontrolní seznam pro migraci
- [ ] Vygenerujte nebo zřiďte nové přihlašovací údaje (certifikát nebo spravovaná identita).
- [ ] Aktualizujte konfiguraci aplikace tak, aby používala nový typ přihlašovacích údajů.
- [ ] Otestujte nové přihlašovací údaje v přípravném prostředí.
- [ ] Nasaďte do produkčního prostředí.
- [ ] Odeberte starý tajný klíč klienta z portálu Azure.
- [ ] Ověřte správné fungování aplikace bez starého tajného kódu.
Vyhněte se běžným chybám zabezpečení
Při práci s klientskými tajemstvími si projděte následující antivzory a doporučené alternativy:
| Vzor neefektivního řešení | Riziko | Recommendation |
|---|---|---|
| Pevně kódované tajné kódy ve zdrojovém kódu | Tajný kód vystavený ve správě verzí | Použití tajných kódů uživatelů, proměnných prostředí nebo Key Vault |
Potvrzení appsettings.Development.json pomocí tajných kódů |
Tajný klíč vystavený komukoli s přístupem k úložišti | Přidejte soubor do .gitignore a místo toho použijte User Secrets. |
| Sdílení tajných kódů napříč prostředími | Ohrožené vývojářské tajemství ohrožuje produkci. | Použití jedinečných tajných kódů pro každé prostředí |
| Použití tajných kódů v produkčním prostředí | Vyšší riziko krádeže přihlašovacích údajů | Migrace na certifikáty nebo spravované identity |
| Vytváření tajných kódů bez plánu vypršení platnosti | Výpadek aplikace při vypršení platnosti tajného kódu | Nastavení připomenutí vypršení platnosti a implementace obměny |
| Protokolování tajných hodnot | Tajný kód vystavený v souborech protokolu | Nikdy protokolovat hodnoty přihlašovacích údajů; protokolovat pouze typ zdroje přihlašovacích údajů |
| Ukládání tajných kódů do souborů ve formátu prostého textu na serverech | Tajný kód vystavený komukoli s přístupem k serveru | Použijte proměnné prostředí nebo Key Vault |
Řešení běžných chyb
Tato část se věnuje častým chybám, ke kterým může dojít při konfiguraci tajných klíčů klienta.
Neplatný tajný klíč klienta
Chyba:AADSTS7000215: Invalid client secret provided.
Možné příčiny:
- Hodnota tajného kódu byla nesprávně zkopírována. Tajné hodnoty můžou obsahovat speciální znaky, které se během operací kopírování a vkládání zkrátí.
- Tajný kód byl vytvořen pro jinou registraci aplikace, než je ten nakonfigurovaný v
ClientId. - Cesta konfigurace je nesprávná a aplikace nečte tajnou hodnotu.
Řešení:
Na portálu Azure vytvořte nový tajný klíč klienta a pečlivě zkopírujte celou hodnotu.
Ověřte, že
ClientIdaTenantIdv konfiguraci odpovídá registraci aplikace, ve které byl tajný klíč vytvořen.Přidejte zarážku nebo protokolovací příkaz pro ověření, že konfigurace je správně načtena.
// For debugging only — remove before committing var config = builder.Configuration.GetSection("AzureAd:ClientCredentials:0:ClientSecret").Value; Console.WriteLine($"Secret loaded: {!string.IsNullOrEmpty(config)}");
Tajný klíč klienta s vypršenou platností
Chyba:AADSTS7000222: The provided client secret keys for app '{app-id}' are expired.
Řešení:
- Přejděte do registrace aplikace v Centrum pro správu Microsoft Entra.
- Zkontrolujte datum vypršení platnosti v části Certifikáty a tajné kódy>klienta.
- Vytvořte nový tajný klíč a aktualizujte konfiguraci aplikace.
- Odstraňte tajný kód, jehož platnost vypršela, z portálu.
Tajný klíč nebyl v konfiguraci nalezen.
Příznak: Aplikace NullReferenceException nebo se ji nepodaří ověřit, protože tajná hodnota je null.
Možné příčiny:
- Tajné kódy uživatele nejsou inicializovány pro projekt.
- Název proměnné prostředí neodpovídá očekávané cestě konfigurace.
- Key Vault není nakonfigurovaný jako zdroj konfigurace.
- Aplikace běží v prostředí, které není vývojové, kde se nenačtou tajné kódy uživatelů.
Řešení:
- Ověřte, zda jsou uživatelská tajemství inicializována kontrolou
UserSecretsIdve vašem souboru.csproj. - Spuštěním
dotnet user-secrets listpříkazu ověřte, že je tajný kód nastavený. - Zkontrolujte, jestli cesta konfigurace přesně odpovídá:
AzureAd:ClientCredentials:0:ClientSecret. - Pokud běží mimo vývojové prostředí, ujistěte se, že je k dispozici příslušný zdroj konfigurace (proměnná prostředí nebo Key Vault).