Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando seu aplicativo é autenticado com o plataforma de identidade da Microsoft, ele apresenta uma credencial para provar sua identidade. Microsoft. O Identity.Web dá suporte a vários tipos de credencial, cada um adequado para diferentes ambientes e requisitos de segurança.
Este artigo ajuda você a entender os tipos de credencial disponíveis, escolher o ideal para seu cenário e configurar credenciais em seu aplicativo.
Por que a escolha da credencial importa
A credencial que seu aplicativo usa afeta diretamente sua postura de segurança, sobrecarga operacional e flexibilidade de implantação. Uma credencial mal escolhida pode expor segredos, exigir rotação manual ou limitar onde seu aplicativo pode ser executado.
Microsoft. O Identity.Web fornece um modelo de configuração unificado que permite:
- Especifique várias credenciais com fallback automático.
- Altere os tipos de credencial sem modificar o código do aplicativo.
- Use credenciais diferentes por ambiente (desenvolvimento, preparo, produção).
Tipos de credencial com suporte
Microsoft. O Identity.Web dá suporte a três categorias de credenciais para aplicativos cliente confidenciais:
Credenciais sem certificado (credenciais de Identidade Federada + Identidade Gerenciada)
As credenciais sem certificado usam Azure Identidade Gerenciada combinada com as Credenciais de Identidade Federadas (FIC) para autenticar seu aplicativo sem gerenciar segredos ou certificados. Azure manipula totalmente o ciclo de vida da credencial.
Como funciona: seu aplicativo usa sua identidade gerenciada para obter um token, que o plataforma de identidade da Microsoft aceita como prova da identidade do aplicativo por meio de uma relação de confiança de federação pré-configurada.
Ideal para: cargas de trabalho de produção que estão em execução no Azure.
Saiba mais sobre autenticação sem certificado
Certificados
Os certificados fornecem autenticação forte e assimétrica baseada em chave. Seu aplicativo prova sua identidade assinando uma declaração com a chave privada do certificado. Microsoft. Identity.Web pode carregar certificados de várias fontes:
- Azure Key Vault – armazenamento de certificados gerenciado centralizado com políticas de acesso.
- Certificate Store – repositório de certificados Windows (CurrentUser ou LocalMachine).
- Caminho do arquivo – Arquivo de certificado em disco (formato .pfx).
- Codificado em Base64 – Certificado inserido diretamente na configuração.
Melhor para: Cargas de trabalho de produção em que as credenciais sem certificado não estão disponíveis ou ambientes híbridos.
Saiba mais sobre credenciais de certificado
Segredos do cliente
Os segredos do cliente são cadeias de caracteres compartilhadas que seu aplicativo apresenta à plataforma de identidade da Microsoft. Eles são o tipo de credencial mais simples a ser configurado, mas oferecem a segurança mais fraca.
Melhor para: Somente desenvolvimento e teste local.
Saiba mais sobre segredos do cliente
Escolher o tipo de credencial correto
Use a árvore de decisão a seguir para determinar qual tipo de credencial é apropriado para seu cenário.
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
Orientação geral
Siga estes princípios ao selecionar um tipo de credencial:
- Sempre prefira credenciais sem certificado quando o aplicativo é executado no Azure. Eles eliminam totalmente o gerenciamento de credenciais.
- Use certificados quando as credenciais sem certificado não estiverem disponíveis. Armazene-os em Azure Key Vault sempre que possível.
- Restrinja segredos do cliente a ambientes de desenvolvimento. Nunca use segredos do cliente em implantações de produção.
Comparar tipos de credencial
A tabela a seguir resume as principais diferenças entre os tipos de credencial:
| Característica | Sem certificado (FIC + MI) | Certificados | Segredos do cliente |
|---|---|---|---|
| Nível de segurança | O mais alto | Alto | Baixo |
| Risco de exposição secreta | Nenhum - nenhum segredo para vazar | Baixa – chave privada protegida | Alta – cadeia de caracteres pode ser copiada |
| Rotação necessária | Não – Azure gerencia o ciclo de vida | Sim - antes da expiração do certificado | Sim - antes da expiração do segredo |
| Complexidade de rotação | Nenhum | Médio – atualizar certificado, reimplantar | Baixo – atualizar cadeia de caracteres, reimplantar |
| configuração do portal Azure | Identidade Gerenciada + confiança FIC | Carregar certificado no registro do aplicativo | Gerar segredo no registro do aplicativo |
| Ambientes adequados | produção Azure | Qualquer ambiente de produção | Somente desenvolvimento e teste |
| Dependência de infraestrutura | Recurso de computação do Azure | Repositório de certificados ou Key Vault | Nenhum |
| Conformidade | Atende aos requisitos de confiança zero | Atende à maioria das estruturas de conformidade | Pode não atender às políticas de segurança |
Configurar credenciais no appsettings.json
Microsoft. O Identity.Web usa uma matriz ClientCredentials em sua configuração para especificar uma ou mais credenciais. Cada entrada na matriz inclui uma SourceType propriedade que indica de onde vem a credencial.
Estrutura de configuração
O exemplo a seguir mostra uma configuração mínima com uma única credencial sem certificado:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
Valores de SourceType
A propriedade SourceType corresponde à enumeração CredentialSource e determina como Microsoft. Identity.Web carrega a credencial:
| Valor de SourceType | Tipo de credencial | Descrição |
|---|---|---|
SignedAssertionFromManagedIdentity |
Sem certificado | Usa a identidade gerenciada para obter uma declaração assinada. Recomendado para produção do Azure. |
KeyVault |
Certificado | Carrega um certificado de Azure Key Vault por URI. |
StoreWithThumbprint |
Certificado | Carrega um certificado do repositório de certificados Windows por impressão digital. |
StoreWithDistinguishedName |
Certificado | Carrega um certificado do repositório de certificados Windows pelo nome diferenciado da entidade. |
Path |
Certificado | Carrega um certificado de um arquivo .pfx no disco. |
Base64Encoded |
Certificado | Carrega um certificado a partir de uma string codificada em Base64 na configuração. |
ClientSecret |
Segredo do cliente | Usa uma cadeia de caracteres de segredo do cliente. |
AutoDecryptKeys |
Descriptografia de token | Recupera automaticamente as chaves para descriptografar tokens criptografados. |
SignedAssertionFilePath |
Federado | Lê uma declaração assinada de um caminho de arquivo (para a identidade da carga de trabalho do Kubernetes). |
Exemplos de credencial por tipo
Os exemplos a seguir mostram como configurar cada tipo de credencial em appsettings.json e, quando disponível, no código C#.
Sem certificado (identidade gerenciada)
Use uma identidade gerenciada atribuída pelo usuário especificando sua ID do cliente:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity",
"ManagedIdentityClientId": "user-assigned-managed-identity-client-id"
}
]
}
}
Para a identidade gerenciada atribuída pelo sistema, omita a ManagedIdentityClientId propriedade:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "SignedAssertionFromManagedIdentity"
}
]
}
}
Certificado de Azure Key Vault
Carregue um certificado armazenado em Azure Key Vault especificando a URL do cofre e o nome do certificado:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "your-certificate-name"
}
]
}
}
Você também pode usar o CredentialDescription método auxiliar em C#:
var credential = CredentialDescription.FromKeyVault(
"https://your-keyvault.vault.azure.net",
"your-certificate-name");
Certificado do repositório de certificados
Carregue um certificado do repositório de certificados Windows por impressão digital:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithThumbprint",
"CertificateThumbprint": "ABC123DEF456...",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
Você também pode usar um nome diferenciado, o que simplifica a rotação de certificados porque o novo certificado é selecionado automaticamente:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "StoreWithDistinguishedName",
"CertificateDistinguishedName": "CN=YourAppCertificate",
"CertificateStorePath": "CurrentUser/My"
}
]
}
}
Em C#, use o método auxiliar:
// 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");
Certificado a partir do caminho do arquivo
Carregar um certificado a partir de um arquivo .pfx no disco:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Path",
"CertificateDiskPath": "/var/certs/app-cert.pfx",
"CertificatePassword": "certificate-password"
}
]
}
}
Aviso
Evite armazenar senhas de certificado diretamente em appsettings.json. Use ASP.NET Core Secret Manager, variáveis de ambiente ou Azure Key Vault para valores confidenciais.
Certificado codificado em Base64
Insira um certificado diretamente na configuração como uma cadeia de caracteres codificada em Base64:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "Base64Encoded",
"Base64EncodedValue": "MIIKcQIBAzCCCi0..."
}
]
}
}
Segredo do cliente
Especifique uma cadeia de caracteres de segredo do cliente para desenvolvimento e teste:
{
"AzureAd": {
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "your-client-secret"
}
]
}
}
Cuidado
Os segredos do cliente só devem ser usados durante o desenvolvimento. Nunca armazene segredos no controle de versão ou os implante em ambientes de produção.
Usar múltiplas credenciais com alternativa de segurança
Você pode especificar várias credenciais na ClientCredentials matriz. Microsoft. Identity.Web tenta cada credencial em ordem e volta para a próxima se a atual falhar. Esse padrão é útil para aplicativos executados em vários ambientes.
{
"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"
}
]
}
}
Neste exemplo:
- O aplicativo primeiro tenta autenticação sem certificado com identidade gerenciada (funciona em Azure).
- Se a identidade gerenciada não estiver disponível, ela retornará a um certificado de Key Vault.
- Como último recurso, ele usa um segredo do cliente (para desenvolvimento local).
Essa abordagem permite que você use o mesmo arquivo de configuração em ambientes sem alterações de código.
Configurar credenciais no código
Você também pode configurar credenciais programaticamente em Program.cs ou 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"
}
};
});
Credenciais de descriptografia de token
Além das credenciais do cliente para autenticação, Microsoft. Identity.Web também dá suporte a credenciais para descriptografia de token. Use credenciais para descriptografia de tokens quando seu aplicativo receber tokens criptografados e precisar descriptografá-los.
As credenciais de descriptografia de token usam os mesmos SourceType valores e padrões de configuração que as credenciais do cliente, mas são especificados na TokenDecryptionCredentials matriz:
{
"AzureAd": {
"TokenDecryptionCredentials": [
{
"SourceType": "KeyVault",
"KeyVaultUrl": "https://your-keyvault.vault.azure.net",
"KeyVaultCertificateName": "token-decryption-cert"
}
]
}
}
Saiba mais sobre a descriptografia de token
Práticas recomendadas
Tenha estas recomendações em mente ao configurar credenciais para seu aplicativo:
Prefira credenciais sem certificado na produção. Eles eliminam o risco de exposição de segredos e removem a sobrecarga associada à rotação. Use-os sempre que seu aplicativo for executado em recursos de computação do Azure que suportam identidade gerenciada.
Use alternativa de credencial para portabilidade. Configure várias credenciais em ordem de prioridade para que seu aplicativo funcione entre desenvolvimento, preparo e produção sem alterações de código.
Nunca use segredos do cliente em produção. Os segredos do cliente podem vazar por meio de logs, arquivos de configuração ou controle do código-fonte. Em vez disso, use certificados ou credenciais sem certificado.
Armazene valores confidenciais fora dos arquivos de configuração. Use Azure Key Vault, variáveis de ambiente ou o Gerenciador de Segredos ASP.NET Core para senhas de certificado e segredos do cliente. Não confirme valores confidenciais no controle do código-fonte.
Renove certificados antes de expirarem. Monitore as datas de validade do certificado e estabeleça um processo de rotação. Azure Key Vault pode automatizar a renovação do certificado.
Use Azure Key Vault para armazenamento de certificados. Key Vault fornece gerenciamento centralizado, políticas de acesso, log de auditoria e rotação automática para certificados.