我如何检查验证令牌jwt

问题描述 投票:0回答:2

我想通过rest api调用检查jwt令牌的有效性,有可能做到这一点吗? (如果可能的话,java,因为我有一个带有 Spring Boot 的 Java 后端和带有 ReactJs 的 JavaScript 前端) 我已经使用 java 和使用 toeken jwt 的 antoher 服务进行了令牌生成。

java spring jwt token
2个回答
0
投票

我已经使用

jsonwebtoken
库完成了此操作。您应该拥有用于加密 jwt 令牌的 jwt 密钥。 您可以在您的 REST API 中使用这些方法:

public boolean validateJwtToken(String authToken) {
  try {
    Jwts.parserBuilder().setSigningKey(key()).build().parse(authToken);
    return true;
  } catch (MalformedJwtException e) {
    logger.error("Invalid JWT token: {}", e.getMessage());
  }
  return false;
}

private Key key() {
    return Keys.hmacShaKeyFor(Decoders.BASE64.decode(jwtSecret));
}

还需要以下依赖项:

    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.5</version>
    </dependency>

    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId>
        <version>0.11.5</version>
        <scope>runtime</scope>
    </dependency>

0
投票
public boolean validateToken(String authToken) throws IOException {
    try {
        Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(authToken);
        return true;
    } catch (ExpiredJwtException e) {
        log.warn(Expired_JWT_TOKEN);
    } catch (UnsupportedJwtException e) {
        log.warn(INVALID_JWT_TOKEN);
    } catch (MalformedJwtException e) {
        log.warn(INVALID_JWT_TOKEN);
    } catch (SignatureException e) {
        log.warn(INVALID_JWT_TOKEN);
    } catch (IllegalArgumentException e) {
        log.warn("Token validation error {}", e.getMessage());
    }
    return false;
}
© www.soinside.com 2019 - 2024. All rights reserved.