CA5404 : ne désactivez pas les vérifications de validation de jeton

Propriété Value
Identificateur de la règle CA5404
Titre Ne pas désactiver les vérifications de validation des jetons
Catégorie Sécurité
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

Définir les propriétés TokenValidationParametersRequireExpirationTime, ValidateAudience, ValidateIssuer ou ValidateLifetime sur false.

Description de la règle

Les vérifications de validation des jetons garantissent que lors de la validation des jetons, tous les aspects sont analysés et vérifiés. La désactivation de la validation peut entraîner des failles de sécurité en autorisant des jetons non approuvés à passer l’étape de validation.

Vous trouverez plus d’informations sur les meilleures pratiques pour la validation des jetons sur le wiki de la bibliothèque.

Comment corriger les violations

Définissez les propriétés TokenValidationParametersRequireExpirationTime, ValidateAudience, ValidateIssuer ou ValidateLifetime sur true. Vous pouvez également supprimer l’affectation à false, car la valeur par défaut est true.

Quand supprimer les avertissements

Dans la grande majorité des cas, cette validation est essentielle pour garantir la sécurité de l’application consommatrice. Toutefois, dans certains cas, cette validation n’est pas nécessaire, en particulier dans les types de jetons non standard. Avant de désactiver cette validation, veillez à bien réfléchir aux implications en matière de sécurité. Pour plus d’informations sur les compromis, consultez le wiki de la bibliothèque de validation de jetons.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Exemples de pseudo-code

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;
    }
}

Solution

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;
    }
}