Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Microsoft. O Identity.Web suporta autenticação baseada em certificados como alternativa segura aos segredos do cliente para aplicações confidenciais do cliente. Os certificados utilizam criptografia assimétrica, pelo que apenas o detentor da chave privada pode autenticar.
Neste artigo, configura credenciais de certificados de várias fontes, regista-as na sua aplicação e gere-as em produção.
Por que usar certificados?
| Fator | Segredo do Cliente | Certidão |
|---|---|---|
| Security | Segredo partilhado (simétrico) | Par de chaves assimétrico |
| Rotação | Requer reimplantação da aplicação ou alteração de configuração | Pode ser automatizado através do Key Vault |
| Risco de exposição | O segredo na configuração pode ser divulgado | Chave privada mantém-se em armazenamento seguro |
| Conformidade | Pode não cumprir as políticas empresariais | Cumpre a maioria dos requisitos de segurança empresarial |
| Recomendado para | Desenvolvimento, prototipagem | Cargas de trabalho de produção |
Importante
A Microsoft recomenda certificados em vez de segredos de cliente para aplicações de produção. Para o nível de segurança mais elevado, utilize autenticação sem certificado (Identidade Gerida ou Federação de Identidade de Carga de Trabalho) quando o seu ambiente de hospedagem a suporta.
Como funciona
- Gera ou obtém um certificado X.509 com uma chave privada.
- Registe a chave pública (ou impressão digital) do certificado junto com o registo da tua aplicação de Microsoft Entra.
- Durante a execução, o Microsoft.Identity.Web carrega o certificado (incluindo a chave privada) da fonte configurada.
- A biblioteca utiliza a chave privada para assinar uma declaração do cliente, que é enviada para o Microsoft Entra ID para obter tokens.
Fontes de certificados
Microsoft. O Identity.Web suporta o carregamento de certificados de múltiplas fontes:
| Tipo de fonte | Valor SourceType |
Melhor Para |
|---|---|---|
| Azure Key Vault | KeyVault |
Produção (recomendado) |
| Loja de Certificados |
StoreWithThumbprint ou StoreWithDistinguishedName |
Servidores Windows, local |
| Caminho do arquivo | Path |
Desenvolvimento, aplicações contentorizadas |
| String codificada em base64 | Base64Encoded |
Segredos do Kubernetes, pipelines de CI/CD |
Configura as credenciais de certificado no ClientCertificates array dentro da sua AzureAd (ou AzureAdB2C) secção de configuração. Pode especificar múltiplos certificados para cenários de rotação — Microsoft. O Identity.Web utiliza o primeiro certificado válido que encontra.
From Azure Key Vault (recomendado)
Azure Key Vault é a fonte recomendada para certificados em produção. Proporciona gestão centralizada, controlo de acessos, auditoria e capacidades de rotação automática.
Configuração
Adicione a configuração do certificado ao seu 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"
}
]
}
}
| Propriedade | Descrição |
|---|---|
SourceType |
Deve ser "KeyVault". |
KeyVaultUrl |
O URI do teu Azure Key Vault (por exemplo, https://myapp-kv.vault.azure.net). |
KeyVaultCertificateName |
O nome do certificado tal como armazenado no Key Vault. |
Configurar políticas de acesso ao Key Vault
A identidade da sua aplicação deve ter permissão para ler certificados do Key Vault. Como concede este acesso dependerá de se utiliza o modelo de política de acesso ao cofre ou o controlo de acesso baseado em funções do Azure (RBAC).
Opção 1: Política de acesso ao cofre
az keyvault set-policy \
--name your-keyvault-name \
--object-id <app-or-managed-identity-object-id> \
--certificate-permissions get list \
--secret-permissions get
Observação
A permissão --secret-permissions get é necessária porque Azure Key Vault armazena a chave privada como um segredo ligado ao certificado. Microsoft. O Identity.Web precisa de acesso tanto ao certificado como à sua chave privada.
Opção 2: Azure RBAC
Atribua o papel Key Vault Certificate User à identidade da sua aplicação:
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>
Utilize uma Identidade Gerida para aceder ao Key Vault
Quando a sua aplicação estiver em execução no Azure (App Service, Funções do Azure, Azure Kubernetes Service, VMs), utilize a Identidade Gerida para efetuar a autenticação no Key Vault. Isto elimina a necessidade de quaisquer credenciais para aceder ao cofre.
Identidade Gerida Atribuída ao Sistema
Se a sua aplicação tiver uma Identidade Gerida atribuída ao sistema ativada, o Microsoft.Identity.Web utiliza automaticamente DefaultAzureCredential para autenticar no Key Vault. Não é necessária nenhuma configuração adicional para além da ClientCertificates entrada:
{
"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"
}
]
}
}
Identidade gerenciada atribuída pelo usuário
Para uma Identidade Gerida atribuída pelo utilizador, especifique o ManagedIdentityClientId no descritor do certificado 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"
}
]
}
}
Sugestão
Ao correr localmente durante o desenvolvimento, DefaultAzureCredential recorre às suas credenciais CLI do Azure ou Visual Studio. Certifica-te de que tens a sessão iniciada com az login e que a tua conta de programador tem as permissões apropriadas no Key Vault.
Da loja de certificados (apenas no Windows)
No Windows, pode carregar certificados a partir da Loja de Certificados do Windows. Isto é comum para implementações on-premises ou alojadas por IIS.
Por impressão digital
Use StoreWithThumbprint para identificar o certificado pela sua impressão digital SHA-1:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "StoreWithThumbprint",
"CertificateStorePath": "CurrentUser/My",
"CertificateThumbprint": "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2"
}
]
}
}
| Propriedade | Descrição |
|---|---|
SourceType |
Deve ser "StoreWithThumbprint". |
CertificateStorePath |
A localização da loja de certificados. Valores comuns: "CurrentUser/My", "LocalMachine/My". |
CertificateThumbprint |
A impressão digital SHA-1 do certificado (40 caracteres hexadecimais). |
Por nome distinto
Use StoreWithDistinguishedName para identificar o certificado pelo nome do assunto:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateStorePath": "CurrentUser/My",
"CertificateDistinguishedName": "CN=MyAppCertificate"
}
]
}
}
| Propriedade | Descrição |
|---|---|
SourceType |
Deve ser "StoreWithDistinguishedName". |
CertificateStorePath |
A localização da loja de certificados. Valores comuns: "CurrentUser/My", "LocalMachine/My". |
CertificateDistinguishedName |
O sujeito distinguia o nome do certificado (por exemplo, "CN=MyAppCertificate"). |
Localizações de lojas de certificados
A tabela seguinte lista caminhos comuns de armazenamento de certificados e as permissões necessárias para aceder a eles:
| Path | Descrição | Permissões necessárias |
|---|---|---|
CurrentUser/My |
Loja pessoal do utilizador atual | Acesso ao nível do utilizador |
LocalMachine/My |
Armazenamento pessoal de âmbito da máquina | Acesso de administrador |
LocalMachine/Root |
CAs raiz confiáveis | Acesso de administrador |
CurrentUser/Root |
CAs raiz de confiança dos utilizadores atuais | Acesso ao nível do utilizador |
Observação
Ao hospedar no IIS, a identidade do pool de aplicações deve ter acesso de leitura à chave privada do certificado. Pode conceder esta permissão usando a opção Gerir Chaves Privadas no snap-in de Certificados do MMC.
A partir do caminho do ficheiro
Pode carregar um certificado diretamente a partir de um .pfx ficheiro (PKCS#12) no disco.
Advertência
Armazenar ficheiros de certificado em disco com palavras-passe em configuração não é recomendado para produção. Use esta abordagem apenas para desenvolvimento local ou em ambientes onde o sistema de ficheiros está protegido (por exemplo, segredos montados em contentores).
Configuração
Adicione o caminho do ficheiro de certificado e a palavra-passe ao seu 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"
}
]
}
}
| Propriedade | Descrição |
|---|---|
SourceType |
Deve ser "Path". |
CertificateDiskPath |
Caminho absoluto ou relativo até ao .pfx ficheiro. |
CertificatePassword |
Palavra-passe do .pfx ficheiro. Se o certificado não tiver palavra-passe, omita esta propriedade ou define-a para uma cadeia vazia. |
Sugestão
Para evitar armazenar a palavra-passe em texto simples em appsettings.json, referencia-a a partir de uma variável de ambiente ou de um gestor de segredos:
Utilizando .NET User Secrets (desenvolvimento):
dotnet user-secrets set "AzureAd:ClientCertificates:0:CertificatePassword" "your-password"
Usando uma variável de ambiente:
export AzureAd__ClientCertificates__0__CertificatePassword="your-password"
A partir do valor codificado em Base64
Pode fornecer o certificado como uma cadeia codificada em Base64. Esta abordagem é útil ao injetar certificados através de variáveis de ambiente, segredos do Kubernetes ou variáveis de pipeline de CI/CD.
Configuração
Adicione o valor do certificado codificado em Base64 ao seu appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCertificates": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0GCSqGSIb3DQEHAaCCCh4Egg..."
}
]
}
}
| Propriedade | Descrição |
|---|---|
SourceType |
Deve ser "Base64Encoded". |
Base64EncodedValue |
O certificado completo (incluindo chave privada) codificado como uma cadeia Base64. |
Gerar o valor Base64
Converter um .pfx ficheiro para uma cadeia 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
Uso com segredos do Kubernetes
Armazene o certificado codificado em Base64 num segredo Kubernetes e mapeie-o para uma variável de ambiente:
apiVersion: v1
kind: Secret
metadata:
name: app-cert-secret
type: Opaque
data:
AzureAd__ClientCertificates__0__Base64EncodedValue: <base64-encoded-pfx>
Faça referência ao segredo na sua implementação:
env:
- name: AzureAd__ClientCertificates__0__SourceType
value: "Base64Encoded"
- name: AzureAd__ClientCertificates__0__Base64EncodedValue
valueFrom:
secretKeyRef:
name: app-cert-secret
key: AzureAd__ClientCertificates__0__Base64EncodedValue
Utilização em pipelines CI/CD
No Azure DevOps ou GitHub Actions, armazena o certificado codificado em Base64 como variável secreta e depois define-o como variável de ambiente em tempo de execução.
Exemplo de GitHub Actions:
env:
AzureAd__ClientCertificates__0__SourceType: "Base64Encoded"
AzureAd__ClientCertificates__0__Base64EncodedValue: ${{ secrets.APP_CERTIFICATE_BASE64 }}
Azure DevOps exemplo:
variables:
AzureAd__ClientCertificates__0__SourceType: "Base64Encoded"
AzureAd__ClientCertificates__0__Base64EncodedValue: $(AppCertificateBase64)
Importante
Embora o certificado esteja codificado em Base64, contém a chave privada e deve ser tratado como um segredo. Use sempre variáveis secretas em pipelines CI/CD — nunca inclua certificados codificados em Base64 no controlo de versão.
Configurar certificados em código C#
Além da configuração JSON, pode configurar credenciais de certificado de forma programática usando a classe CredentialDescription da Microsoft.Identity.Abstractions.
Métodos auxiliares
A CredentialDescription classe fornece métodos auxiliares estáticos para cada tipo de fonte de certificado:
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...");
Utilização no ASP.NET Core
Passe diretamente as descrições das credenciais ao configurar a autenticação:
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")
};
});
Sugestão
Os métodos auxiliares são equivalentes a definir manualmente propriedades num CredentialDescription objeto. Eles fornecem uma sintaxe mais concisa ao configurar credenciais em código em vez de através de appsettings.json.
Crie um certificado auto-assinado para desenvolvimento
Para desenvolvimento e testes locais, pode criar um certificado auto-assinado. Não uses certificados autoassinados na produção.
Utilização do PowerShell (Windows)
Execute os seguintes comandos para criar um certificado auto-assinado, exportá-lo e mostrar a impressão digital:
$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)"
Utilização do OpenSSL (multiplataforma)
Execute os seguintes comandos para gerar um certificado, empacote-o como ficheiro .pfx e mostre a impressão digital:
# 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
Utilizar a CLI do .NET
Exporte um certificado HTTPS de desenvolvimento como ficheiro .pfx :
dotnet dev-certs https --export-path ./MyDevCertificate.pfx --password YourPassword123!
Observação
O dotnet dev-certs comando gera um certificado de desenvolvimento HTTPS. Embora possa ser usado para testar o carregamento de certificados, destina-se principalmente a HTTPS local e pode não ser adequado para todos os cenários de testes de autenticação.
Registe o certificado no Microsoft Entra ID
Depois de criar ou obter um certificado, deve registar a sua chave pública com o registo da sua aplicação no Microsoft Entra ID.
Usando o portal Azure
- Vá ao portal Azure e navegue até Microsoft Entra ID>Registos de aplicações.
- Selecione a sua candidatura.
- Selecione Certificados & segredos>>
- Carregue o ficheiro
.cerou.pemque contenha apenas a chave pública. Não carregue o.pfxficheiro que contém a chave privada. - Note o valor da impressão digital apresentado após o upload — pode ser necessário para a configuração.
Usar CLI do Azure
az ad app credential reset \
--id <application-client-id> \
--cert @/path/to/certificate.pem \
--append
A --append bandeira adiciona o certificado sem remover credenciais existentes.
Utilização do Microsoft Graph PowerShell
$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)
Importante
Apenas carregue a chave pública (.cer ou .pem) para o registo da aplicação. Nunca carregues o .pfx ficheiro que contém a chave privada. A chave privada deve permanecer armazenada de forma segura e acessível apenas à sua aplicação.
Rotação de certificados
A rotação de certificados substitui um certificado a expirar por um novo antes de este expirar, garantindo um serviço ininterrupto.
Estratégia: Certificados sobrepostos
A abordagem recomendada utiliza períodos de validade sobrepostos:
- Gerar um novo certificado antes do atual expirar (por exemplo, com 30 a 60 dias de antecedência).
- Regista o novo certificado no registo da tua aplicação de Microsoft Entra juntamente com o existente. O Microsoft Entra ID aceita tokens assinados por qualquer certificado registado.
- Implementa o novo certificado na fonte do certificado da tua aplicação (Key Vault, armazenamento de certificados, etc.).
- Atualize a configuração (se necessário) para apontar para o novo certificado.
- Remova o certificado antigo do registo da aplicação depois de confirmar que todas as instâncias usam o novo.
Múltiplos certificados em configuração
Microsoft. O Identity.Web suporta a especificação de múltiplos certificados. A biblioteca testa-os por ordem e utiliza o primeiro certificado válido:
{
"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"
}
]
}
}
Rotação automática com Azure Key Vault
Azure Key Vault suporta renovação automática de certificados. Quando ativas a rotação automática:
- O Key Vault gera uma nova versão do certificado antes da expiração.
- Microsoft. O Identity.Web detecta automaticamente a versão mais recente (na próxima busca do certificado).
- A versão antiga do certificado mantém-se válida até expirar.
Para configurar a rotação automática no Key Vault:
az keyvault certificate set-attributes \
--vault-name your-keyvault-name \
--name your-certificate-name \
--policy @rotation-policy.json
Sugestão
Para aplicações com processos de longa duração, considere implementar uma atualização periódica de certificados. Microsoft. O Identity.Web armazena o certificado em memória. Se o certificado for alterado no Key Vault, a aplicação obtém o novo certificado na próxima vez que precisa criar uma nova instância de aplicação confidencial MSAL.
Resolver problemas de erros de certificado
Esta secção lista mensagens de erro comuns e as suas soluções.
Erros comuns
Certificado não encontrado
Mensagem de erro:
System.Security.Cryptography.CryptographicException: The certificate cannot be found.
Possíveis causas e soluções:
| Motivo | Solução |
|---|---|
| Impressão digital incorreta | Verifique se a impressão digital na sua configuração corresponde ao certificado instalado. Remova quaisquer caracteres ocultos (espaços, Unicode invisível). |
| Repositório de certificados errado | Confirme se CertificateStorePath coincide com o local onde o certificado está instalado (CurrentUser/My vs LocalMachine/My). |
| Certificado não instalado | Importa o certificado para a loja correta usando certmgr.msc (CurrentUser) ou certlm.msc (LocalMachine). |
| Incompatibilidade de nomes no Key Vault | Verifica se KeyVaultUrl e KeyVaultCertificateName estão corretos. |
| Arquivo não encontrado | Confirme que CertificateDiskPath aponta para um ficheiro .pfx existente e que a aplicação tem acesso de leitura. |
Acesso negado ao Key Vault
Mensagem de erro:
Azure.RequestFailedException: The user, group or application '...' does not have certificates get permission on key vault '...'
Soluções:
- As políticas de verificação de acesso concedem
getpermissão tanto para certificados como para segredos. - Se usar Azure RBAC, certifique-se de que a identidade tem o papel Utilizador de Certificado do Key Vault.
- Para a Identidade Gerida, confirme que a identidade está ativada e que o ID correto do objeto é usado na política.
Chave privada do certificado não acessível
Mensagem de erro:
System.Security.Cryptography.CryptographicException: Keyset does not exist.
Soluções:
- No Windows/IIS, certifique-se de que a identidade do pool de aplicações tem acesso read à chave privada. Use a consola de gestão MMC de Certificados para conceder acesso usando Gerir Chaves Privadas.
- No Linux, verifique se o
.pfxficheiro tem permissões apropriadas (chmod 600). - Certifique-se de que o certificado foi exportado com a chave privada (
Export-PfxCertificateouopenssl pkcs12 -export).
Certificado expirado
Mensagem de erro:
AADSTS700027: Client assertion contains an invalid signature. The key was expired.
Soluções:
- Verifique o período de validade do certificado:
openssl x509 -in cert.pem -noout -dates. - Gere um novo certificado e atualize tanto o registo da aplicação como a configuração da sua aplicação.
- Implemente a rotação de certificados para evitar futuros problemas de expiração. Consulte rotação de certificados.
Palavra-passe errada do certificado
Mensagem de erro:
System.Security.Cryptography.CryptographicException: The specified network password is not correct.
Soluções:
- Verifique se
CertificatePasswordcoincide com a palavra-passe usada quando exportar o ficheiro.pfx. - Se usares variáveis de ambiente, verifica se há problemas de codificação (linhas novas, caracteres especiais).
- Reexporte o certificado com uma palavra-passe conhecida.
Lista de verificação diagnóstica
Use esta lista de verificação quando a autenticação de certificados não estiver a funcionar:
- [ ] Validade do certificado — O certificado está dentro do seu período de validade? Verifica as datas
NotBeforeeNotAfter. - [ ] Registo da aplicação — A chave pública do certificado é carregada para o registo correto da aplicação?
- [ ] A impressão digital corresponde — A impressão digital na sua configuração corresponde ao certificado no registo da aplicação?
- [ ] Acesso à chave privada — O processo de candidatura pode ler a chave privada do certificado?
- [ ] Permissões de Key Vault — Para fontes de Key Vault, a identidade tem tanto as permissões
certificates/getcomosecrets/get? - [ ] Secção de configuração — A configuração do certificado está sob a secção correta (
AzureAdouAzureAdB2C)? - [ ] NuGet packages — O
Microsoft.Identity.Webestá atualizado? Versões mais antigas podem não suportar certos tipos de código-fonte de certificados.
Ativar registo de logs
Para obter informações de diagnóstico detalhadas, ative o registo MSAL:
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd")
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();
builder.Logging.AddFilter("Microsoft.Identity", LogLevel.Debug);
Revise os registos para mensagens sobre carregamento de certificados, criação de asserções de clientes e aquisição de tokens.
Conteúdo relacionado
- Visão geral das credenciais
- Autenticação sem certificado — Federação de Identidade Gerida e Identidade de Carga de Trabalho
- Segredos do cliente — tipo alternativo de credencial para aplicações confidenciais
- Desencriptação de tokens — utilização de certificados para desencriptação de tokens
- Registo e diagnóstico