我上个月使用JWT,我没有遇到任何问题。但是从昨天开始,我遇到了这个错误,如下所示
com.auth0.jwt.exceptions.InvalidClaimException:之前无法使用令牌。 ..
我知道生成令牌时有一个时间戳,令牌不能 在此之前得到验证。令牌正在另一台服务器上验证。但一直以来,都很好。有人可以建议吗?
谢谢,
答案 0 :(得分:3)
也许尝试使用https://jwt.io/查看您的JWT令牌 - 您能否确定它是否已过期?取exp值(可能是纪元)并转换 - https://www.epochconverter.com/
您在问题中添加的信息非常少,无法提供更多详细信息。您可以尝试(重新)使用上次向您发送JWT令牌的IDP进行身份验证,并检查是否也能解决您的问题。
根据您的上次评论,服务器是否有任何时钟偏差?
答案 1 :(得分:1)
如果您使用的是auth0-spring-security-api,则可以按照以下方式自定义leeway:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value(value = "${auth0.audience}")
private String apiAudience;
@Value(value = "${auth0.issuer}")
private String issuer;
@Override
protected void configure(HttpSecurity http) throws Exception {
final JwkProvider jwkProvider = new JwkProviderBuilder(issuer).build();
JwtAuthenticationProvider jwtAuthenticationProvider = new JwtAuthenticationProvider(jwkProvider, issuer,
apiAudience);
jwtAuthenticationProvider.withJwtVerifierLeeway(3);
JwtWebSecurityConfigurer.forRS256(apiAudience, issuer, jwtAuthenticationProvider).configure(http)
.authorizeRequests().antMatchers("/**").authenticated();
}
答案 2 :(得分:0)
首先查看您的AUTH提供者租户设置。如果“登录会话管理->非活动超时” 设置得太低,请尝试增加它,看看错误是否发生。
OR