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.
| Property | Valor |
|---|---|
| ID da regra | CA5405 |
| Título | Nem sempre ignore a validação do token em delegados |
| Categoria | Segurança |
| Correção interruptiva ou sem interrupção | Sem interrupção |
| Habilitado por padrão no .NET 10 | Não |
Causa
O retorno de chamada atribuído a AudienceValidator ou LifetimeValidator sempre retorna true.
Descrição da regra
Ao se definir representantes de validação TokenValidationParameter críticos para sempre retornar true, proteções de autenticação importantes são desabilitadas. Desabilitar proteções pode levar à validação incorreta de tokens de qualquer emissor ou tokens expirados.
Para obter mais informações sobre as melhores práticas para validação de token, consulte o wiki da biblioteca.
Como corrigir violações
- Melhore a lógica do representante para que nem todos os caminhos de código retornem
true, o que efetivamente desabilita esse tipo de validação. - Gerar
SecurityTokenInvalidAudienceExceptionouSecurityTokenInvalidLifetimeExceptionem casos de falha quando você deseja falhar na validação e ter outros casos passados retornandotrue.
Quando suprimir avisos
Em alguns casos específicos em que você está utilizando o representante para registro em log adicional e é para tipos de token em que o tipo específico de validação não é necessário, pode fazer sentido suprimir esse aviso. Antes de desabilitar essa validação, lembre-se de ter pensado totalmente nas implicações de segurança. Para obter informações sobre as compensações, confira o wiki da biblioteca de validação de token.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5405.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Exemplos de pseudocódigo
Violação
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Solução
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) =>
{
// Implement your own custom audience validation
if (PerformCustomAudienceValidation(audiences, token))
return true;
else
return false;
};
}
}