Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA5405 |
| Tytuł | Nie zawsze pomijaj walidację tokenu w delegatach |
| Kategoria | Bezpieczeństwo |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Nie. |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Wywołanie zwrotne przypisane do metody AudienceValidator lub LifetimeValidator zawsze zwraca wartość true.
Opis reguły
Ustawiając krytycznych delegatów weryfikacyjnych TokenValidationParameter tak, aby zawsze zwracały true, ważne zabezpieczenia uwierzytelniania są wyłączane. Wyłączenie zabezpieczeń może prowadzić do nieprawidłowej weryfikacji tokenów z dowolnego wystawcy lub wygasłych tokenów.
Aby uzyskać więcej informacji na temat najlepszych praktyk walidacji tokenów, odwiedź wiki biblioteki.
Jak naprawić naruszenia
- Popraw logikę delegata, aby nie wszystkie ścieżki kodu zwracały wartość
true, co skutecznie wyłącza ten typ weryfikacji. - Zgłaszaj
SecurityTokenInvalidAudienceExceptionlubSecurityTokenInvalidLifetimeExceptionw przypadkach niepowodzenia, gdy chcesz, aby walidacja nie powiodła się i inne przypadki przechodzą zwracająctrue.
Kiedy pomijać ostrzeżenia
W niektórych konkretnych przypadkach, w których używasz delegata do dodatkowego rejestrowania i którego używasz dla typów tokenów, gdzie konkretny rodzaj weryfikacji nie jest potrzebny, może być uzasadnione zignorowanie tego ostrzeżenia. Przed wyłączeniem tej weryfikacji upewnij się, że w pełni rozważyłeś implikacje dotyczące zabezpieczeń. Aby uzyskać informacje o kompromisach, zobacz wiki biblioteki weryfikacji tokenów.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5405.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady pseudokodu
Naruszenie
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Rozwiązanie
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;
};
}
}