Delen via


CA5405: Tokenvalidatie niet altijd overslaan in gemachtigden

Eigenschappen Weergegeven als
Regel-id CA5405
Titel Tokenvalidatie in gemachtigden niet altijd overslaan
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

De callback die is toegewezen aan AudienceValidator of LifetimeValidator altijd retourneert true.

Beschrijving van regel

Door kritieke TokenValidationParameter validatiedelegeringen in te stellen om altijd te retourneren true, worden belangrijke verificatiebeveiligingen uitgeschakeld. Het uitschakelen van beveiliging kan leiden tot onjuiste validatie van tokens van een verlener of verlopen tokens.

Zie de wiki van de bibliotheek voor meer informatie over aanbevolen procedures voor tokenvalidatie.

Schendingen oplossen

  • Verbeter de logica van de gemachtigde zodat niet alle codepaden retourneren true, waardoor dat type validatie effectief wordt uitgeschakeld.
  • Werp SecurityTokenInvalidAudienceException of SecurityTokenInvalidLifetimeException in foutgevallen wanneer u de validatie wilt mislukken en andere gevallen doorstaan door te retourneren true.

Wanneer waarschuwingen onderdrukken

In sommige specifieke gevallen waarin u de gemachtigde gebruikt voor extra logboekregistratie en voor tokentypen waarbij het specifieke type validatie niet nodig is, kan het zinvol zijn om deze waarschuwing te onderdrukken. Voordat u deze validatie uitschakelt, moet u zeker weten wat de gevolgen voor de beveiliging zijn. Zie de wiki van de tokenvalidatiebibliotheek voor informatie over de afwegingen.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

Schending

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
    }
}

Oplossing

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