Přehled přihlašovacích údajů pro Microsoft Identity.Web

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:

  1. Aplikace se poprvé pokusí o ověřování bez certifikátů pomocí spravované identity (funguje na Azure).
  2. Pokud spravovaná identita není dostupná, přejde se na certifikát z Key Vaultu.
  3. 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ů.