Próbuję utworzyć metodę sprawdzania poprawności tokena, która zwraca wartość true, jeśli token JWT jest ważny na podstawie podpisu. Nie wydaje mi się, że naprawdę muszę sprawdzić poprawność wszystkiego w tokenie, ale co właściwie oznacza token jest ważny po wywołaniu ValidateToken()? Istnienie zasady? Token out-based zawiera określone wartości? Nie wiem, kiedy zwrócić true z tej metody.Kiedy właściwość JWTSecurityTokenHandler.ValidateToken() jest rzeczywiście poprawna?
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;
}
Witamy w Stack Overflow, Eddie. Należy pamiętać, że sekcja odpowiedzi służy wyłącznie do pełnej odpowiedzi na oryginalne pytanie, a nie na komentarz. – Celeo
Przepraszam, myślałem, że odpowiadam na to pytanie, pokazując, że ustawiono właściwości sprawdzania poprawności na true, a następnie wychwytywanie wyjątków, które są zgłaszane. Czy w moim wyjaśnieniu było zbyt wiele komentarzy? –
Patrząc na kod źródłowy, wygląda to tak: WalidateToken rzuci na nieważny token. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/master/src/System.IdentityModel.Tokens.Jwt/JwtSecurityTokenHandler.cs To jest zły projekt; nie powinniśmy używać wyjątków do sterowania przepływem. Ale taki jest dzisiejszy stan biblioteki. –