CA5404: não desabilitar as verificações de validação de token

Property Valor
ID da regra CA5404
Título Não desabilitar verificações de validação de token
Categoria Segurança
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Não

Causa

Definir propriedadesTokenValidationParametersRequireExpirationTime, ValidateAudience, ValidateIssuer ou ValidateLifetime como false.

Descrição da regra

Verificações de validação de tokens garantem que, ao validar tokens, todos os aspectos sejam analisados e verificados. Desativar a validação pode levar a falhas de segurança, permitindo que tokens não confiáveis passem pela validação.

Mais detalhes sobre as práticas recomendadas para validação de token podem ser encontrados no wiki da biblioteca.

Como corrigir violações

Defina as propriedades TokenValidationParametersRequireExpirationTime, ValidateAudience, ValidateIssuer ou ValidateLifetime como true. Ou remova a atribuição para false porque o valor padrão é true.

Quando suprimir avisos

Na grande maioria dos casos, essa validação é essencial para garantir a segurança do aplicativo consumidor. No entanto, há alguns casos em que essa validação não é necessária, especialmente em tipos de token não padrão. 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 CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

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.CA5404.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Exemplos de pseudocódigo

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = false;
        parameters.ValidateAudience = false;
        parameters.ValidateIssuer = false;
        parameters.ValidateLifetime = false;
    }
}

Solução

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = true;
        parameters.ValidateAudience = true;
        parameters.ValidateIssuer = true;
        parameters.ValidateLifetime = true;
    }
}