CA5405: Non ignorare sempre la convalida dei token nei delegati

Proprietà valore
ID regola CA5405
Titolo Non ignorare sempre la convalida dei token nei delegati
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

Il callback assegnato a AudienceValidator o LifetimeValidator restituisce truesempre .

Descrizione regola

Impostando delegati di convalida critici TokenValidationParameter per restituire truesempre , le misure di sicurezza importanti per l'autenticazione sono disabilitate. La disabilitazione delle misure di sicurezza può causare una convalida errata dei token da qualsiasi emittente o token scaduto.

Per altre informazioni sulle procedure consigliate per la convalida dei token, vedere il wiki della libreria.

Come correggere le violazioni

  • Migliorare la logica del delegato in modo che non tutti i percorsi di codice restituisca true, che disabilita in modo efficace tale tipo di convalida.
  • Generare SecurityTokenInvalidAudienceException o SecurityTokenInvalidLifetimeException in casi di errore quando si desidera non eseguire la convalida e fare in modo che altri casi vengano superati restituendo true.

Quando eliminare gli avvisi

In alcuni casi specifici in cui si usa il delegato per la registrazione aggiuntiva ed è per i tipi di token in cui non è necessario il tipo specifico di convalida, può essere opportuno eliminare questo avviso. Prima di disabilitare questa convalida, assicurarsi di aver esaminato appieno le implicazioni per la sicurezza. Per informazioni sui compromessi, vedere il wiki della libreria di convalida dei token.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

Violazione

using System;
using Microsoft.IdentityModel.Tokens;

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

Soluzione

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