Ich versuche eine Token-Validierungsmethode zu erstellen, die true zurückgibt, wenn ein JWT-Token basierend auf der Signatur gültig ist. Ich glaube nicht, dass ich wirklich alles im Token validieren muss, aber was eigentlich ein Token bedeutet, ist nach dem Aufruf von ValidateToken() gültig? Die Existenz eines Prinzips? Das Out-referenzierte Token enthält bestimmte Werte? Nicht sicher, wann von dieser Methode die Wahrheit zurückgegeben werden soll.Wann ist JWTSecurityTokenHandler.ValidateToken() tatsächlich gültig?
public bool ValidateToken(string tokenString)
{
var validationParameters = new TokenValidationParameters()
{
ValidIssuer = "My Company",
ValidAudience = ApplicationId,
IssuerSigningKey = JsonWebTokenSecretKey
};
SecurityToken token = new JwtSecurityToken();
var tokenHandler = new JwtSecurityTokenHandler();
var principal = tokenHandler.ValidateToken(tokenString, validationParameters, out token);
return principal != null;
}
Willkommen bei Stack Overflow, Eddie. Bitte beachten Sie, dass der Antwortbereich nur für vollständige Antworten auf die ursprüngliche Frage und nicht für Kommentare dient. – Celeo
Entschuldigung, ich dachte, ich habe die Frage beantwortet, indem ich gezeigt habe, dass Sie die validate-Eigenschaften auf "true" setzen und dann Ausnahmen abfangen, die ausgelöst werden. Gab es zu viele Kommentare in meiner Erklärung? –
Mit Blick auf den Quellcode scheint dies tatsächlich der Fall zu sein: ValidateToken wird auf ungültiges Token werfen. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/src/System.IdentityModel.Tokens.Jwt/JwtSecurityTokenHandler.cs Dies ist ein schlechtes Design; Wir sollten keine Ausnahmen für den Kontrollfluss verwenden. Aber das ist der Zustand dieser Bibliothek heute. –