Share via


CA5405: Ne hagyja ki mindig a tokenérvényesítést a meghatalmazottakban

Tulajdonság Érték
Szabályazonosító CA5405
Cím Ne hagyja ki mindig a tokenérvényesítést a meghatalmazottakban
Kategória Biztonság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A visszahíváshoz rendelt AudienceValidator vagy LifetimeValidator mindig visszaadott truevisszahívás.

Szabály leírása

Ha a kritikus TokenValidationParameter érvényesítési meghatalmazottakat mindig visszatérésre trueállítja, a fontos hitelesítési garanciák le vannak tiltva. A biztosítékok letiltása a jogkivonatok helytelen érvényesítését eredményezheti bármely kiállítótól vagy lejárt jogkivonattól.

A jogkivonatok érvényesítésének ajánlott eljárásairól a kódtár wikijében talál további információt.

Szabálysértések kijavítása

  • Javítsa a delegált logikáját, hogy ne minden kódútvonal térjen vissza true, ami hatékonyan letiltja az ilyen típusú ellenőrzést.
  • Dobjon SecurityTokenInvalidAudienceException vagy SecurityTokenInvalidLifetimeException hiba esetén, ha sikertelen érvényesítést szeretne végrehajtani, és más eseteket is át szeretne adni a visszatéréssel true.

Mikor kell letiltani a figyelmeztetéseket?

Bizonyos esetekben, amikor a delegáltat további naplózásra használja, és olyan jogkivonat-típusok esetében, ahol nincs szükség az adott típusú ellenőrzésre, érdemes lehet letiltani ezt a figyelmeztetést. Mielőtt letiltja ezt az ellenőrzést, győződjön meg arról, hogy teljes mértékben átgondolta a biztonsági következményeket. A kompromisszumokkal kapcsolatos információkért tekintse meg a jogkivonat-érvényesítési kódtár wikijét.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Példák pszeudokódokra

Megsértése

using System;
using Microsoft.IdentityModel.Tokens;

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

Megoldás

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