Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA5405 |
| Titel | Sla de tokenvalidatie in gedelegeerden niet altijd over |
| Categorie | Beveiliging |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Nee |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
De callback die is toegewezen aan AudienceValidator of LifetimeValidator retourneert altijd true.
Beschrijving van regel
Door kritieke TokenValidationParameter validatiedelegates in te stellen om altijd true te retourneren, worden belangrijke authenticatiebeveiligingen 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.
Hoe schendingen op te lossen
- Verbeter de logica van de gemachtigde zodat niet alle codepaden retourneren
true, waardoor dat type validatie effectief wordt uitgeschakeld. - Werp
SecurityTokenInvalidAudienceExceptionofSecurityTokenInvalidLifetimeExceptionin foutgevallen wanneer u wilt dat de validatie mislukt en andere gevallen slagen doortruete retourneren.
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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.
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;
};
}
}