Sto tentando di creare un metodo di convalida del token che restituisce true se un token JWT è valido in base alla firma. Non penso di aver davvero bisogno di convalidare tutto nel token ma ciò che in realtà significa che un token è valido dopo aver chiamato ValidateToken()? L'esistenza di un principio? Il token referenziato out contiene determinati valori? Non sono sicuro quando restituire true da questo metodo.Quando JWTSecurityTokenHandler.ValidateToken() è effettivamente valido?
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;
}
Benvenuti in Stack Overflow, Eddie. Si prega di notare che la sezione di risposta è solo per le risposte complete alla domanda originale, non per il commento. – Celeo
Le mie scuse, ho pensato che stavo rispondendo alla domanda mostrando che hai impostato le proprietà di validazione su true e poi catturato le eccezioni generate. C'erano troppi commenti nella mia spiegazione? –
Guardando il codice sorgente, sembra proprio questo il caso: ValidateToken getterà su un token non valido. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/src/System.IdentityModel.Tokens.Jwt/JwtSecurityTokenHandler.cs Questo è un cattivo design; non dovremmo usare le eccezioni per il controllo del flusso. Ma questo è lo stato di questa biblioteca oggi. –