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.
Microsoft. Identity.Web podporuje ověřování na základě certifikátů jako zabezpečenou alternativu k tajným klíčům klienta pro důvěrné klientské aplikace. Certifikáty používají asymetrickou kryptografii, takže se může ověřit pouze držitel privátního klíče.
V tomto článku nakonfigurujete přihlašovací údaje certifikátu z různých zdrojů, zaregistrujete je v aplikaci a budete je spravovat v produkčním prostředí.
Proč používat certifikáty?
| Faktor | Tajný klíč klienta | Certifikát |
|---|---|---|
| Security | Sdílený tajný klíč (symetrický) | Asymetrický pár klíčů |
| Otočení | Vyžaduje opětovné nasazení aplikace nebo změnu konfigurace. | Je možné automatizovat prostřednictvím Key Vault |
| Riziko expozice | Tajnost v konfiguraci může uniknout | Privátní klíč zůstává v zabezpečeném úložišti |
| Dodržování předpisů | Nemusí splňovat podnikové zásady | Splňuje většinu podnikových požadavků na zabezpečení. |
| Doporučeno pro: | Vývoj, vytváření prototypů | Produkční úlohy |
Důležité
Microsoft doporučuje certifikáty pro klientské tajné kódy pro produkční aplikace. Pro nejvyšší stav zabezpečení používejte ověřování bez certifikátů (spravovaná identita nebo federace identit úloh), když ho vaše hostitelské prostředí podporuje.
Jak to funguje
- Vygenerujete nebo získáte certifikát X.509 s privátním klíčem.
- Zaregistrujete publikový klíč (nebo kryptografický otisk) certifikátu s registrací aplikace Microsoft Entra.
- Za běhu Microsoft. Identity.Web načte certifikát (včetně privátního klíče) z vašeho nakonfigurovaného zdroje.
- Knihovna používá privátní klíč k podepsání klientského prohlášení, které odesílá do Microsoft Entra ID k získání tokenů.
Zdroje certifikátů
Microsoft. Identity.Web podporuje načítání certifikátů z více zdrojů:
| Typ zdroje | hodnota SourceType |
Nejlepší pro |
|---|---|---|
| Azure Key Vault | KeyVault |
Produkce (doporučeno) |
| Úložiště certifikátů |
StoreWithThumbprint nebo StoreWithDistinguishedName |
Windows servery v místním prostředí |
| Cesta k souboru | Path |
Vývoj, kontejnerizované aplikace |
| Řetězec kódovaný Base64 | Base64Encoded |
Tajné kódy Kubernetes, kanály CI/CD |
V poli ClientCertificates v oddílu AzureAd konfigurace (neboAzureAdB2C) nakonfigurujete přihlašovací údaje certifikátu. Pro scénáře obměny můžete zadat více certifikátů – Microsoft. Identity.Web používá první platný certifikát, který najde.
Z Azure Key Vault (doporučeno)
Azure Key Vault je doporučeným zdrojem pro certifikáty v produkčním prostředí. Poskytuje centralizovanou správu, řízení přístupu, auditování a možnosti automatické rotace.
Konfigurace
Přidejte konfiguraci certifikátu do složky appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
| Vlastnictví | Description |
|---|---|
SourceType |
Musí být "KeyVault". |
KeyVaultUrl |
Identifikátor URI služby vašeho Azure Key Vault (například https://myapp-kv.vault.azure.net). |
KeyVaultCertificateName |
Název certifikátu uložený v Key Vault. |
Nastavení zásad přístupu Key Vault
Identita vaší aplikace musí mít oprávnění ke čtení certifikátů z Key Vault. Způsob udělení závisí na tom, jestli používáte model zásad přístupu k trezoru nebo Azure řízení přístupu na základě role (RBAC).
Možnost 1: Zásady přístupu do úložiště trezoru
az keyvault set-policy \
--name your-keyvault-name \
--object-id <app-or-managed-identity-object-id> \
--certificate-permissions get list \
--secret-permissions get
Poznámka:
Vyžaduje se oprávnění --secret-permissions get, protože Azure Key Vault ukládá privátní klíč jako tajný klíč propojený s certifikátem. Microsoft. Identity.Web potřebuje přístup k certifikátu i jeho privátnímu klíči.
Možnost 2: Azure RBAC
Přiřaďte roli uživatele certifikátu Key Vault identitě aplikace:
az role assignment create \
--role "Key Vault Certificate User" \
--assignee <app-or-managed-identity-object-id> \
--scope /subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.KeyVault/vaults/<vault-name>
Použití spravované identity pro přístup k Key Vault
Když vaše aplikace běží v Azure (App Service, Azure Functions, Azure Kubernetes Service, virtuální počítače), použijte spravovanou identitu k ověření v Key Vault. To eliminuje potřebu jakýchkoli přihlašovacích údajů pro přístup k samotnému trezoru.
Spravovaná identita přiřazená systémem
Pokud má vaše aplikace povolenou spravovanou identitu systémově přiřazenou, Microsoft.Identity.Web automaticky používá DefaultAzureCredential k ověření s Key Vault. Kromě položky ClientCertificates není potřeba žádná další konfigurace:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Spravovaná identita přiřazená uživatelem
U spravované identity přiřazené uživatelem zadejte ManagedIdentityClientId na popisovači certifikátu Key Vault:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault-name.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
Návod
Při místním spuštění během vývoje se DefaultAzureCredential vrátí k vašim Azure CLI nebo Visual Studio přihlašovacím údajům. Ujistěte se, že jste přihlášení pomocí az login a že váš vývojářský účet má příslušná oprávnění Key Vault.
Z úložiště certifikátů (pouze Windows)
Na Windows můžete načíst certifikáty z úložiště certifikátů Windows. To je běžné pro místní nasazení nebo nasazení hostované službou IIS.
Podle otisku prstu
Slouží StoreWithThumbprint k identifikaci certifikátu kryptografickým otiskem SHA-1:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "StoreWithThumbprint",
"CertificateStorePath": "CurrentUser/My",
"CertificateThumbprint": "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2"
}
]
}
}
| Vlastnictví | Description |
|---|---|
SourceType |
Musí být "StoreWithThumbprint". |
CertificateStorePath |
Umístění úložiště certifikátů. Společné hodnoty: "CurrentUser/My", "LocalMachine/My". |
CertificateThumbprint |
Kryptografický otisk SHA-1 certifikátu (40 šestnáctkových znaků). |
Podle rozlišujícího názvu
Slouží StoreWithDistinguishedName k identifikaci certifikátu podle názvu subjektu:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateStorePath": "CurrentUser/My",
"CertificateDistinguishedName": "CN=MyAppCertificate"
}
]
}
}
| Vlastnictví | Description |
|---|---|
SourceType |
Musí být "StoreWithDistinguishedName". |
CertificateStorePath |
Umístění úložiště certifikátů. Společné hodnoty: "CurrentUser/My", "LocalMachine/My". |
CertificateDistinguishedName |
Rozlišující název subjektu certifikátu (například "CN=MyAppCertificate"). |
Umístění úložiště certifikátů
Následující tabulka uvádí běžné cesty k úložišti certifikátů a oprávnění potřebná pro přístup k nim:
| Cesta | Description | Požadována oprávnění |
|---|---|---|
CurrentUser/My |
Osobní obchod aktuálního uživatele | Přístup na úrovni uživatele |
LocalMachine/My |
Osobní prodejna pro celý stroj | Přístup správce |
LocalMachine/Root |
Důvěryhodné kořenové certifikační autority | Přístup správce |
CurrentUser/Root |
Důvěryhodné kořenové certifikační autority aktuálního uživatele | Přístup na úrovni uživatele |
Poznámka:
Při hostování ve službě IIS musí mít identita fondu aplikací přístup pro čtení k privátnímu klíči certifikátu. Můžete to udělit pomocí možnosti Spravovat privátní klíče v modulu snap-in Certifikáty konzoly MMC.
Z cesty k souboru
Certifikát můžete načíst přímo ze souboru .pfx na disku.
Výstraha
Ukládání souborů certifikátů na disk s hesly v konfiguraci se nedoporučuje pro produkční prostředí. Tento přístup použijte pouze pro místní vývoj nebo v prostředích, kde je systém souborů zabezpečený (například připojené tajné kódy v kontejnerech).
Konfigurace
Přidejte cestu k souboru certifikátu a heslo do složky appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "Path",
"CertificateDiskPath": "/path/to/certificate.pfx",
"CertificatePassword": "your-certificate-password"
}
]
}
}
| Vlastnictví | Description |
|---|---|
SourceType |
Musí být "Path". |
CertificateDiskPath |
Absolutní nebo relativní cesta k .pfx souboru. |
CertificatePassword |
Heslo k .pfx souboru. Pokud certifikát nemá žádné heslo, tuto vlastnost vynecháte nebo ji nastavte na prázdný řetězec. |
Návod
Abyste se vyhnuli ukládání hesla ve formátu prostého textu appsettings.json, napište ho z proměnné prostředí nebo správce tajných kódů:
Použití uživatelských tajemství .NET (vývoj):
dotnet user-secrets set "AzureAd:ClientCertificates:0:CertificatePassword" "your-password"
Použití proměnné prostředí:
export AzureAd__ClientCertificates__0__CertificatePassword="your-password"
Z hodnoty s kódováním Base64
Certifikát můžete zadat jako řetězec s kódováním Base64. Tento přístup je užitečný při vkládání certifikátů prostřednictvím proměnných prostředí, tajných kódů Kubernetes nebo proměnných kanálu CI/CD.
Konfigurace
Přidejte hodnotu certifikátu s kódováním Base64 do svého appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0GCSqGSIb3DQEHAaCCCh4Egg..."
}
]
}
}
| Vlastnictví | Description |
|---|---|
SourceType |
Musí být "Base64Encoded". |
Base64EncodedValue |
Úplný certifikát (včetně privátního klíče) kódovaný jako řetězec Base64. |
Vygenerování hodnoty Base64
.pfx Převeďte soubor na řetězec Base64:
PowerShell:
$certBytes = [System.IO.File]::ReadAllBytes("path/to/certificate.pfx")
$base64 = [System.Convert]::ToBase64String($certBytes)
$base64 | Set-Clipboard # Copies to clipboard
Bash:
base64 -w 0 path/to/certificate.pfx
Použití s tajnými kódy Kubernetes
Uložte certifikát kódovaný v Base64 do tajného kódu Kubernetes a namapujte ho na proměnnou prostředí:
apiVersion: v1
kind: Secret
metadata:
name: app-cert-secret
type: Opaque
data:
AzureAd__ClientCertificates__0__Base64EncodedValue: <base64-encoded-pfx>
Odkazujte na tajný klíč v nasazení:
env:
- name: AzureAd__ClientCertificates__0__SourceType
value: "Base64Encoded"
- name: AzureAd__ClientCertificates__0__Base64EncodedValue
valueFrom:
secretKeyRef:
name: app-cert-secret
key: AzureAd__ClientCertificates__0__Base64EncodedValue
Použití v CI/CD pipelinech
V Azure DevOps nebo GitHub Actions uložte certifikát s kódováním Base64 jako tajnou proměnnou a pak ho nastavte jako proměnnou prostředí za běhu.
GitHub Actions example:
env:
AzureAd__ClientCertificates__0__SourceType: "Base64Encoded"
AzureAd__ClientCertificates__0__Base64EncodedValue: ${{ secrets.APP_CERTIFICATE_BASE64 }}
Azure DevOps example:
variables:
AzureAd__ClientCertificates__0__SourceType: "Base64Encoded"
AzureAd__ClientCertificates__0__Base64EncodedValue: $(AppCertificateBase64)
Důležité
I když je certifikát kódovaný base64, obsahuje privátní klíč a musí být považován za tajný klíč. Vždy používejte tajné proměnné v kanálech CI/CD – nikdy neověřete certifikáty s kódováním Base64 do správy zdrojového kódu.
Konfigurace certifikátů v kódu jazyka C#
Kromě konfigurace JSON můžete přihlašovací údaje certifikátu nakonfigurovat programově pomocí třídy CredentialDescription z Microsoft.Identity.Abstractions.
Pomocné metody
Třída CredentialDescription poskytuje statické pomocné metody pro každý typ zdroje certifikátu:
using Microsoft.Identity.Abstractions;
// From Azure Key Vault
var kvCredential = CredentialDescription.FromKeyVault(
"https://your-keyvault-name.vault.azure.net",
"your-certificate-name");
// From certificate store (by thumbprint)
var thumbprintCredential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
thumbprint: "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2");
// From certificate store (by distinguished name)
var dnCredential = CredentialDescription.FromCertificateStore(
"CurrentUser/My",
distinguishedName: "CN=MyAppCertificate");
// From file path
var pathCredential = CredentialDescription.FromCertificatePath(
"/path/to/certificate.pfx",
"your-certificate-password");
// From Base64-encoded string
var base64Credential = CredentialDescription.FromBase64String(
"MIIKcQIBAzCCCi0GCSqGSIb3DQEHAaCCCh4Egg...");
Použití v ASP.NET Core
Při konfiguraci ověřování předejte popisy přihlašovacích údajů přímo:
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
options.Instance = "https://login.microsoftonline.com/";
options.TenantId = "your-tenant-id";
options.ClientId = "your-client-id";
options.ClientCredentials = new[]
{
CredentialDescription.FromKeyVault(
"https://your-keyvault-name.vault.azure.net",
"your-certificate-name")
};
});
Návod
Pomocné metody jsou ekvivalentní nastavení vlastností objektu CredentialDescription ručně. Poskytují stručnější syntaxi při konfiguraci přihlašovacích údajů v kódu, nikoli prostřednictvím appsettings.json.
Vytvoření samopodepsaného certifikátu pro vývoj
Pro místní vývoj a testování můžete vytvořit certifikát podepsaný svým držitelem. Nepoužívejte certifikáty podepsané svým držitelem v produkčním prostředí.
Pomocí PowerShellu (Windows)
Spuštěním následujících příkazů vytvořte certifikát podepsaný svým držitelem, exportujte ho a zobrazte kryptografický otisk:
$cert = New-SelfSignedCertificate `
-Subject "CN=MyDevCertificate" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeySpec Signature `
-KeyLength 2048 `
-KeyAlgorithm RSA `
-HashAlgorithm SHA256 `
-NotAfter (Get-Date).AddYears(2)
# Export the .pfx file (with private key)
$password = ConvertTo-SecureString -String "YourPassword123!" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\MyDevCertificate.pfx" -Password $password
# Export the .cer file (public key only — for app registration)
Export-Certificate -Cert $cert -FilePath ".\MyDevCertificate.cer"
# Display the thumbprint
Write-Host "Thumbprint: $($cert.Thumbprint)"
Použití OpenSSL (napříč platformami)
Spuštěním následujících příkazů vygenerujte certifikát, zabalte ho .pfx jako soubor a zobrazte kryptografický otisk:
# Generate a self-signed certificate and private key
openssl req -x509 -newkey rsa:2048 \
-keyout key.pem -out cert.pem \
-days 730 -nodes \
-subj "/CN=MyDevCertificate"
# Package into a .pfx file
openssl pkcs12 -export \
-out MyDevCertificate.pfx \
-inkey key.pem -in cert.pem \
-passout pass:YourPassword123!
# Get the thumbprint
openssl x509 -in cert.pem -noout -fingerprint -sha1
Použití rozhraní příkazového řádku .NET
Export vývojového certifikátu HTTPS jako .pfx souboru:
dotnet dev-certs https --export-path ./MyDevCertificate.pfx --password YourPassword123!
Poznámka:
Příkaz dotnet dev-certs vygeneruje vývojový certifikát HTTPS. I když se dá použít k testování načítání certifikátů, je primárně určená pro místní protokol HTTPS a nemusí být vhodná pro všechny scénáře testování ověřování.
Registrace certifikátu v Microsoft Entra ID
Po vytvoření nebo získání certifikátu musíte v Microsoft Entra ID zaregistrovat jeho veřejný klíč v registraci aplikace.
Použití portálu Azure
- Přejděte na portál Azure a přejděte na Microsoft Entra ID>Registrace aplikací.
- Vyberte aplikaci.
- Vyberte
Certifikáty & tajemství Certifikáty Nahrát certifikát . - Nahrajte soubor
.cernebo.pemobsahující pouze veřejný klíč. Nenahrávejte.pfxsoubor, který obsahuje privátní klíč. - Poznamenejte si hodnotu kryptografického otisku zobrazenou po nahrání – možná ji budete potřebovat pro konfiguraci.
Použití Azure CLI
az ad app credential reset \
--id <application-client-id> \
--cert @/path/to/certificate.pem \
--append
Příznak --append přidá certifikát bez odebrání existujících přihlašovacích údajů.
Použití Microsoft Graph PowerShellu
$certData = [System.IO.File]::ReadAllBytes(".\MyDevCertificate.cer")
$base64Cert = [System.Convert]::ToBase64String($certData)
$keyCredential = @{
type = "AsymmetricX509Cert"
usage = "Verify"
key = [System.Convert]::FromBase64String($base64Cert)
displayName = "MyAppCertificate"
}
Update-MgApplication -ApplicationId <app-object-id> -KeyCredentials @($keyCredential)
Důležité
Nahrajte pouze veřejný klíč (.cer nebo .pem) do registrace aplikace. Nikdy nenahrávejte soubor .pfx, který obsahuje privátní klíč. Privátní klíč musí zůstat bezpečně uložený a přístupný jenom pro vaši aplikaci.
Rotace certifikátů
Rotace certifikátů nahradí stávající certifikát novým ještě před jeho vypršením, čímž se zajišťuje nepřerušovaná služba.
Strategie: Překrývající se certifikáty
Doporučený postup používá překrývající se období platnosti:
- Vygenerujte nový certifikát před vypršením platnosti aktuálního certifikátu (například 30–60 dní předem).
- Registrujte nový certifikát v registraci aplikace Microsoft Entra vedle existujícího certifikátu. Microsoft Entra ID přijímá tokeny podepsané libovolným registrovaným certifikátem.
- Deploy nový certifikát do zdroje certifikátu vaší aplikace (Key Vault, úložiště certifikátů atd.).
- Aktualizujte konfiguraci (v případě potřeby) tak, aby odkazovat na nový certifikát.
- Po potvrzení, že všechny instance používají nový certifikát, odeberte starý certifikát z registrace aplikace.
Několik certifikátů v konfiguraci
Microsoft. Identity.Web podporuje zadávání více certifikátů. Knihovna je zkusí v daném pořadí a použije první platný certifikát.
{
"AzureAd": {
"ClientCertificates": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "new-cert-2026"
},
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "current-cert-2025"
}
]
}
}
Automatické otáčení pomocí Azure Key Vault
Azure Key Vault podporuje automatické prodlužování platnosti certifikátu. Když povolíte automatické otáčení:
- Key Vault vygeneruje novou verzi certifikátu před vypršením platnosti.
- Microsoft. Identity.Web automaticky převezme nejnovější verzi (při příštím načtení certifikátu).
- Původní verze certifikátu zůstane platná, dokud nevyprší platnost.
Pro konfiguraci automatické rotace v Key Vault:
az keyvault certificate set-attributes \
--vault-name your-keyvault-name \
--name your-certificate-name \
--policy @rotation-policy.json
Návod
U aplikací s dlouhotrvajícími procesy zvažte implementaci pravidelné aktualizace certifikátu. Microsoft. Identity.Web ukládá certifikát do mezipaměti v paměti. Pokud se certifikát otočí v Key Vault, aplikace převezme nový certifikát při příštím vytvoření nové instance důvěrné klientské aplikace MSAL.
Řešení chyb certifikátů
Tato část obsahuje seznam běžných chybových zpráv a jejich řešení.
Běžné chyby
Certifikát nebyl nalezen.
Chybová zpráva:
System.Security.Cryptography.CryptographicException: The certificate cannot be found.
Možné příčiny a řešení:
| Příčina | Řešení |
|---|---|
| Nesprávný kryptografický otisk | Ověřte, že kryptografický otisk v konfiguraci odpovídá nainstalovanému certifikátu. Odeberte všechny skryté znaky (mezery, neviditelné unicode). |
| Nesprávné úložiště certifikátů | Ověřte, že CertificateStorePath odpovídá umístění, kde je certifikát nainstalovaný (CurrentUser/My vs LocalMachine/My). |
| Certifikát není nainstalovaný | Importujte certifikát do správného úložiště pomocí certmgr.msc (CurrentUser) nebo certlm.msc (LocalMachine). |
| Neshoda názvu trezoru klíčů | Ověřte KeyVaultUrl a KeyVaultCertificateName jsou správná. |
| Soubor nebyl nalezen. | Ověřte CertificateDiskPath , že odkazuje na existující .pfx soubor a aplikace má přístup pro čtení. |
Přístup odepřen pro Key Vault
Chybová zpráva:
Azure.RequestFailedException: The user, group or application '...' does not have certificates get permission on key vault '...'
Řešení:
- Ověřte, že zásady přístupu udělují
getoprávnění pro certifikáty i tajné kódy. - Pokud používáte Azure RBAC, ujistěte se, že uživatelský účet má roli Key Vault Certificate User.
- U spravované identity ověřte, že je identita povolená, a v zásadách se používá správné ID objektu.
Privátní klíč certifikátu není přístupný
Chybová zpráva:
System.Security.Cryptography.CryptographicException: Keyset does not exist.
Řešení:
- Na Windows/IIS se ujistěte, že identita fondu aplikací má read přístup k privátnímu klíči. Pomocí modulu snap-in Certifikáty konzoly MMC udělte přístup prostřednictvím správy privátních klíčů.
- V Linuxu
.pfxověřte, že soubor má příslušná oprávnění k souborům (chmod 600). - Ujistěte se, že byl certifikát exportován pomocí privátního klíče (
Export-PfxCertificateneboopenssl pkcs12 -export).
Platnost certifikátu vypršela
Chybová zpráva:
AADSTS700027: Client assertion contains an invalid signature. The key was expired.
Řešení:
- Zkontrolujte dobu platnosti certifikátu:
openssl x509 -in cert.pem -noout -dates. - Vygenerujte nový certifikát a aktualizujte registraci aplikace i konfiguraci vaší aplikace.
- Implementujte obměnu certifikátů, abyste zabránili budoucím problémům s vypršením platnosti. Viz Obměně certifikátů.
Nesprávné heslo certifikátu
Chybová zpráva:
System.Security.Cryptography.CryptographicException: The specified network password is not correct.
Řešení:
- Ověřte
CertificatePassword, že odpovídá heslu použitému při exportu.pfxsouboru. - Pokud používáte proměnné prostředí, zkontrolujte problémy s kódováním (nové řádky na konci, speciální znaky).
- Znovu exportujte certifikát se známým heslem.
Kontrolní seznam diagnostiky
Tento kontrolní seznam použijte, pokud ověřování certifikátu nefunguje:
- [ ] Platnost osvědčení – Je certifikát v době platnosti? Zkontrolujte
NotBeforeaNotAfterdatumy. - [ ] Registrace aplikace – Je veřejný klíč certifikátu nahraný do správné registrace aplikace?
- [ ] Shoda kryptografického otisku — Odpovídá kryptografický otisk ve vaší konfiguraci certifikátu v registraci aplikace?
- [ ] Přístup k privátnímu klíči – Může proces aplikace číst privátní klíč certifikátu?
- [ ] Oprávnění Key Vault — Má identita u zdrojů Key Vault oprávnění
certificates/getisecrets/get? - [ ] Oddíl Konfigurace – Je konfigurace certifikátu ve správném oddílu (
AzureAdneboAzureAdB2C)? - [ ] NuGet packages — Je
Microsoft.Identity.Webaktuální? Starší verze nemusí podporovat některé typy zdrojů certifikátů.
Povolit protokolování
Pokud chcete získat podrobné diagnostické informace, povolte protokolování MSAL:
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd")
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();
builder.Logging.AddFilter("Microsoft.Identity", LogLevel.Debug);
Projděte si protokoly kvůli zprávám o načítání certifikátů, tvorbě klientských tvrzení a získávání tokenů.
Související obsah
- Přehled přihlašovacích údajů
- Ověřování bez certifikátů – Spravovaná identita a federace pracovních identit
- Tajné kódy klienta – alternativní typ přihlašovacích údajů pro důvěrné aplikace
- Dešifrování tokenů – použití certifikátů pro dešifrování tokenů
- Protokolování a diagnostika