private void ValidateJwt(string token, string issuer, string audience, string key) { var validationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = issuer, ValidateAudience = true, ValidAudience = audience, RequireAudience = true, ClockSkew = _configuration.ClockSkew, ValidateLifetime = true, RequireExpirationTime = true, RequireSignedTokens = true, ValidateIssuerSigningKey = true, IssuerSigningKey = _tokenGenerator.CreateKey(key) }; try { _tokenHandler.ValidateToken(token, validationParameters, out _); } catch (SecurityTokenInvalidIssuerException ex) { throw new TokenValidationException(I18n.TokenIssuerError, ex); } catch (SecurityTokenInvalidAudienceException ex) { throw new TokenValidationException(I18n.TokenAudienceError, ex); } catch (SecurityTokenInvalidSignatureException ex) { throw new TokenValidationException(I18n.TokenSignatureError, ex); } catch (SecurityTokenExpiredException ex) { throw new TokenValidationException(I18n.TokenExpiredError, ex); } catch (SecurityTokenException ex) { throw new TokenValidationException(I18n.TokenValidationError, ex); } }