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.
Když se vaše aplikace ověří pomocí Microsoft identity platform, zobrazí přihlašovací údaje k prokázání své identity. Microsoft. Identity.Web podporuje několik typů přihlašovacích údajů, které jsou vhodné pro různá prostředí a požadavky na zabezpečení.
Tento článek vám pomůže pochopit dostupné typy přihlašovacích údajů, zvolit ten správný pro váš scénář a nakonfigurovat přihlašovací údaje ve vaší aplikaci.
Proč záleží na volbě přihlašovacích údajů
Přihlašovací údaje, které vaše aplikace používá, přímo ovlivňují stav zabezpečení, provozní režii a flexibilitu nasazení. Špatně zvolené přihlašovací údaje můžou zveřejnit tajné kódy, vyžadovat ruční obměnu nebo omezit, kde může vaše aplikace běžet.
Microsoft. Identity.Web poskytuje jednotný konfigurační model, který umožňuje:
- Zadejte více přihlašovacích údajů s automatickým přechodem na záložní.
- Změňte typy přihlašovacích údajů beze změny kódu aplikace.
- Pro každé prostředí použijte různé přihlašovací údaje (vývoj, příprava, produkční prostředí).
Podporované typy přihlašovacích údajů
Microsoft. Identity.Web podporuje tři kategorie přihlašovacích údajů pro důvěrné klientské aplikace:
Přihlašovací údaje bez certifikátů (federované přihlašovací údaje + spravovaná identita)
Přihlašovací údaje bez certifikátů používají Azure spravovanou identitu v kombinaci s přihlašovacími údaji federované identity (FIC) k ověření aplikace bez nutnosti spravovat tajné kódy nebo certifikáty. Azure celý životní cyklus přihlašovacích údajů zpracovává.
Pokud to funguje: Vaše aplikace používá spravovanou identitu k získání tokenu, který Microsoft identity platform přijímá jako důkaz identity aplikace prostřednictvím předem nakonfigurovaného vztahu důvěryhodnosti federace.
Nejvhodnější pro: Produkční úlohy spuštěné na Azure.
Další informace o ověřování bez certifikátů
Certifikáty
Certifikáty poskytují silné asymetrické ověřování založené na klíčích. Vaše aplikace prokáže svou identitu podepsáním kontrolního výrazu pomocí privátního klíče certifikátu. Microsoft. Identity.Web může načíst certifikáty z více zdrojů:
- Azure Key Vault – centralizované spravované úložiště certifikátů se zásadami přístupu.
- Certificate Store – úložiště certifikátů Windows (CurrentUser nebo LocalMachine).
- Cesta k souboru – Soubor certifikátu na disku (formát .pfx).
- Kódování Base64 – Certifikát vložený přímo v konfiguraci.
Nejvhodnější pro: Produkční úlohy, ve kterých nejsou k dispozici přihlašovací údaje bez certifikátů nebo hybridní prostředí.
Další informace o přihlašovacích údaji certifikátu
Tajné kódy klienta
Tajnosti klienta jsou sdílené řetězce, které vaše aplikace prezentuje platformě Microsoft Identity. Jedná se o nejjednodušší typ přihlašovacích údajů ke konfiguraci, ale nabízí nejslabší zabezpečení.
Nejvhodnější pro: Pouze místní vývoj a testování.
Další informace o tajemství klienta
Výběr správného typu přihlašovacích údajů
Pomocí následujícího rozhodovacího stromu určete, který typ přihlašovacích údajů je vhodný pro váš scénář.
Is your application running on Azure?
├── Yes
│ ├── Can you use Managed Identity?
│ │ ├── Yes → Use certificateless credentials (recommended)
│ │ └── No → Use certificates from Azure Key Vault
└── No
├── Is this a production environment?
│ ├── Yes → Use certificates (Key Vault, Certificate Store, or file path)
│ └── No → Use client secrets for development/testing
Obecné pokyny
Při výběru typu přihlašovacích údajů postupujte podle těchto principů:
- Vždy preferujte přihlašovací údaje bez certifikátů při provozu aplikace na Azure. Zcela eliminují správu přihlašovacích údajů.
- Certifikáty používejte , pokud nejsou k dispozici přihlašovací údaje bez certifikátů. Kdykoli je to možné, uložte je do Azure Key Vault.
- Omezte přístupové tajnosti klientů na vývojová prostředí. Nikdy nepoužívejte tajné kódy klienta v produkčních nasazeních.
Porovnání typů přihlašovacích údajů
Následující tabulka shrnuje klíčové rozdíly mezi typy přihlašovacích údajů:
| Characteristic | Bez certifikátů (FIC + MI) | Certifikáty | Tajné kódy klienta |
|---|---|---|---|
| Úroveň zabezpečení | Nejvyšší | Vysoko | Nízká úroveň |
| Riziko úniku tajných informací | Žádné – žádný tajný kód pro únik | Nízká – ochrana privátního klíče | Vysoká: řetězec lze zkopírovat. |
| Vyžaduje se otáčení | Ne – Azure spravuje životní cyklus | Ano – před vypršením platnosti certifikátu | Ano – před vypršením platnosti tajného kódu |
| Složitost rotace | None | Střední – aktualizace certifikátu, opětovné nasazení | Nízká – aktualizační řetězec, opětovné nasazení |
| Nastavení portálu Azure | Spravovaná identita a vztah důvěryhodnosti FIC | Nahrání certifikátu do registrace aplikace | Generování tajného kódu v registraci aplikace |
| Vhodná prostředí | Azure production | Jakékoli produkční prostředí | Pouze vývoj a testování |
| Závislost infrastruktury | Azure výpočetní prostředek | Úložiště certifikátů nebo Key Vault | None |
| Dodržování předpisů | Splňuje požadavky nulové důvěryhodnosti. | Splňuje většinu architektur dodržování předpisů. | Nemusí splňovat zásady zabezpečení |
Konfigurace přihlašovacích údajů v appsettings.json
Microsoft. Identity.Web používá v konfiguraci pole ClientCredentials k zadání jednoho nebo více přihlašovacích údajů. Každá položka v poli obsahuje SourceType vlastnost, která označuje, odkud přihlašovací údaje pocházejí.
Struktura konfigurace
Následující příklad ukazuje minimální konfiguraci s jedním přihlašovacími údaji bez certifikátů:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
Hodnoty SourceType
Vlastnost SourceType odpovídá výčtu CredentialSource a určuje, jak Microsoft. Identity.Web načte přihlašovací údaje:
| Hodnota SourceType | Typ přihlašovacích údajů | Description |
|---|---|---|
SignedAssertionFromManagedIdentity |
Bez certifikátů | Používá spravovanou identitu k získání podepsaného asertu. Doporučeno pro Azure produkční prostředí. |
KeyVault |
Certifikát | Načte certifikát z Azure Key Vault pomocí URI. |
StoreWithThumbprint |
Certifikát | Načte certifikát z úložiště certifikátů Windows kryptografickým otiskem. |
StoreWithDistinguishedName |
Certifikát | Načte certifikát z úložiště certifikátů Windows podle rozlišujícího názvu subjektu. |
Path |
Certifikát | Načte certifikát ze souboru .pfx na disk. |
Base64Encoded |
Certifikát | Z konfigurace načte certifikát z Base64-kódovaného řetězce. |
ClientSecret |
Tajemství klienta | Používá klientský tajný řetězec. |
AutoDecryptKeys |
Dešifrování tokenů | Automaticky načte klíče pro dešifrování šifrovaných tokenů. |
SignedAssertionFilePath |
Federalizovaný | Přečte podepsaný kontrolní výraz z cesty k souboru (pro identitu úlohy Kubernetes). |
Příklady přihlašovacích údajů podle typu
Následující příklady ukazují, jak nakonfigurovat jednotlivé typy přihlašovacích údajů v appsettings.json kódu jazyka C#, pokud jsou k dispozici.
Bez certifikátů (spravovaná identita)
Použijte spravovanou identitu přiřazenou uživatelem zadáním ID klienta:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
U spravované identity přiřazené systémem vynecháte ManagedIdentityClientId vlastnost:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity"
}
]
}
}
Certifikát z Azure Key Vault
Načtení certifikátu uloženého v Azure Key Vault zadáním adresy URL trezoru a názvu certifikátu:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Pomocnou metodu CredentialDescription můžete použít také v jazyce C#:
var credential = CredentialDescription.FromKeyVault(
"https://your-keyvault.vault.azure.net",
"your-certificate-name");
Certifikát z úložiště certifikátů
Načtěte certifikát z úložiště certifikátů Windows kryptografickým otiskem:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithThumbprint",
"CertificateThumbprint": "ABC123DEF456...",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
Můžete také použít rozlišující název, který zjednodušuje obměnu certifikátů, protože nový certifikát je vybrán automaticky:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateDistinguishedName": "CN=YourAppCertificate",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
V jazyce C# použijte pomocnou metodu:
// By thumbprint
var credential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
thumbprint: "ABC123DEF456...");
// By distinguished name (recommended for rotation)
var credential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
distinguishedName: "CN=YourAppCertificate");
Certifikát z cesty k souboru
Načtení certifikátu ze .pfx souboru na disku:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Path",
"CertificateDiskPath": "/var/certs/app-cert.pfx",
"CertificatePassword": "certificate-password"
}
]
}
}
Výstraha
Vyhněte se ukládání hesel certifikátů přímo do appsettings.json. Pro citlivé hodnoty použijte ASP.NET Core Secret Manager, proměnné prostředí nebo Azure Key Vault.
Certifikát kódovaný kódem Base64
Vložte certifikát přímo do konfigurace jako řetězec kódovaný kódem Base64:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0..."
}
]
}
}
Tajemství klienta
Zadejte tajný řetězec klienta pro vývoj a testování:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "your-client-secret"
}
]
}
}
Upozornění
Tajné kódy klienta by se měly používat jenom při vývoji. Nikdy neukládejte tajné kódy do správy zdrojového kódu ani je nenasazujte do produkčních prostředí.
Použití více přihlašovacích údajů se záložními přihlašovacími údaji
V poli můžete zadat více přihlašovacích údajů ClientCredentials . Microsoft.Identity.Web zkouší přihlašovací údaje v pořadí a přejde na další, pokud se první z nich nezdaří. Tento model je užitečný pro aplikace, které běží v několika prostředích.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "your-managed-identity-client-id"
},
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
},
{
"SourceType": "ClientSecret",
"ClientSecret": "development-only-secret"
}
]
}
}
V tomto příkladu:
- Aplikace se poprvé pokusí o ověřování bez certifikátů pomocí spravované identity (funguje na Azure).
- Pokud spravovaná identita není dostupná, přejde se na certifikát z Key Vaultu.
- Jako poslední možnost používá tajný klíč klienta (pro místní vývoj).
Tento přístup umožňuje používat stejný konfigurační soubor napříč prostředími beze změn kódu.
Konfigurace přihlašovacích údajů v kódu
Přihlašovací údaje můžete nakonfigurovat také programově v Program.cs nebo Startup.cs:
using Microsoft.Identity.Web;
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd")
.EnableTokenAcquisitionToCallDownstreamApi()
.AddDownstreamApi("MyApi", builder.Configuration.GetSection("MyApi"))
.AddDistributedTokenCaches();
// Or configure credentials programmatically
builder.Services.Configure<MicrosoftIdentityOptions>(options =>
{
options.ClientCredentials = new[]
{
new CredentialDescription
{
SourceType = CredentialSource.SignedAssertionFromManagedIdentity,
ManagedIdentityClientId = "your-managed-identity-client-id"
}
};
});
Přihlašovací údaje pro dešifrování tokenů
Kromě přihlašovacích údajů klienta pro ověřování Microsoft. Identity.Web také podporuje přihlašovací údaje pro dešifrování tokenů. Přihlašovací údaje pro dešifrování tokenů použijte, když vaše aplikace obdrží šifrované tokeny a potřebuje je dešifrovat.
Přihlašovací údaje pro dešifrování tokenů používají stejné SourceType hodnoty a vzory konfigurace jako přihlašovací údaje klienta, ale jsou zadané v TokenDecryptionCredentials poli:
{
"AzureAd": {
"TokenDecryptionCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "token-decryption-cert"
}
]
}
}
Další informace o dešifrování tokenů
Osvědčené postupy
Při konfiguraci přihlašovacích údajů pro vaši aplikaci mějte na paměti tato doporučení:
Preferujte přihlašovací údaje bez certifikátů v produkčním prostředí. Eliminují riziko vystavení tajných informací a odstraňují režii obnovování. Používejte je při každém spuštění aplikace na Azure výpočetních prostředků, které podporují spravovanou identitu.
Pro přenositelnost použijte záložní přihlašovací údaje. Nakonfigurujte více přihlašovacích údajů v pořadí podle priority, aby vaše aplikace fungovala napříč vývojem, přípravou a produkčním prostředím beze změn kódu.
Nikdy nepoužívejte tajné kódy klienta v produkčním prostředí. Tajné kódy klienta můžou uniknout prostřednictvím protokolů, konfiguračních souborů nebo správy zdrojového kódu. Místo toho používejte certifikáty nebo přihlašovací údaje bez certifikátů.
Ukládejte citlivé hodnoty mimo konfigurační soubory. Používejte Azure Key Vault, proměnné prostředí nebo ASP.NET Core Secret Manager pro hesla certifikátů a tajné kódy klienta. Neukládejte citlivé hodnoty do verzovacího systému.
Obnovte certifikáty před vypršením jejich platnosti. Monitorujte data vypršení platnosti certifikátu a vytvořte proces obměně. Azure Key Vault může automatizovat prodloužení platnosti certifikátů.
Pro úložiště certifikátů použijte Azure Key Vault. Key Vault poskytuje centralizovanou správu, zásady přístupu, protokolování auditu a automatickou obměnu certifikátů.