CA5405 : n’ignorez pas toujours la validation des jetons dans les délégués
Propriété | Value |
---|---|
Identificateur de la règle | CA5405 |
Titre | Ne pas toujours ignorer la validation des jetons dans les délégués |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Le rappel affecté à AudienceValidator ou LifetimeValidator retourne toujours true
.
Description de la règle
En définissant les délégués de validation critiques TokenValidationParameter
pour qu’ils retournent toujours true
, les protections d’authentification importantes sont désactivées. La désactivation des protections peut entraîner une validation incorrecte des jetons de n’importe quel émetteur ou des jetons arrivés à expiration.
Pour plus d’informations sur les bonnes pratiques en matière de validation de jeton, consultez le wiki de la bibliothèque.
Comment corriger les violations
- Améliorez la logique du délégué afin que tous les chemins de code ne retournent pas
true
, ce qui désactive ce type de validation. - Levez
SecurityTokenInvalidAudienceException
ouSecurityTokenInvalidLifetimeException
dans les cas d’échec où vous souhaitez faire échouer la validation et que d’autres cas réussissent en retournanttrue
.
Quand supprimer les avertissements
Dans certains cas spécifiques où vous utilisez le délégué pour une journalisation supplémentaire et pour les types de jetons où le type de validation spécifique n’est pas nécessaire, il peut être judicieux de supprimer cet avertissement. 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 CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
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.CA5405.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Exemples de pseudo-code
Violation
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Solution
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;
};
}
}