我正在构建一个服务器端REST服务应用程序。我的JWT身份验证令牌有问题。登录后我可以轻松获取令牌(这里我使用Postman)。
但是,当我尝试使用相同的令牌对访问受保护REST控制器的请求进行身份验证时,出现以下错误:
io.jsonwebtoken.SignatureException: JWT signature does not match locally computed signature. JWT validity cannot be asserted and should not be trusted.
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:354)
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:481)
at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:541)
at com.configuration.jwt.JwtTokenUtil.extractClaims(JwtTokenUtil.java:104)
at com.configuration.jwt.JwtTokenUtil.getUsernameFromToken(JwtTokenUtil.java:39)
at com.configuration.jwt.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:44)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
...
Run Code Online (Sandbox Code Playgroud)
就像应用程序不记得它生成的令牌一样。这是来自Postman的 get 请求,它产生了这个错误:
我想异常的来源来自extractClaims我的类的方法JwtTokenUtil:
@Component
public final class JwtTokenUtil {
public static final int EXPIRATION_IN_SECONDS = 120;
private static final String JWT_SECRET = "Some$ecretKey";
private Clock clock = DefaultClock.INSTANCE;
@Value("${jwt.secret}") …Run Code Online (Sandbox Code Playgroud)