邮递员:“输入不是有效的 Base64 编码字符串”

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

对于一个学校项目,我尝试使用 JWT 令牌作为身份验证,当 JWT 令牌包含“教练”角色时,这意味着用户有权执行某些操作。

我编写了创建字符串的方法,以及应该对其进行解码的方法,但是当我将获取的字符串放入 Postman 时,我收到 500 内部服务器错误,因为根据 Postman 的说法,它不是有效的 Base64 编码字符串。 在 jwt.io 中,它解码没有任何问题...

我写的代码如下:

Algorithm algorithm = Algorithm.HMAC256("wisebite");

public String login() {
    String jwtToken = JWT.create()
            .withIssuer("wisebite")
            .withSubject("wisebitedetails")
            .withClaim("role", "coach")
            .withIssuedAt(new Date())
            .withExpiresAt(new Date(System.currentTimeMillis() + 5000L))
            .withJWTId(UUID.randomUUID()
                    .toString())
            .withNotBefore(new Date(System.currentTimeMillis() + 1000L))
            .sign(algorithm);
    return jwtToken;
}

public boolean hasAcces (String jwtToken) {
    JWTVerifier jwtVerifier = JWT.require(algorithm).withIssuer("wisebite").build();
    DecodedJWT decodedJWT = jwtVerifier.verify(jwtToken);
    if (decodedJWT.getClaim("role").equals("coach")) {
        return true;
    } else {
        return false;
    }
}

是的,我知道,这不是登录的方式,因为没有检查任何内容,但我想先看看这段代码是否有效,所以当我在 Postman 中导航到 http://localhost:8080/coach/login 时,我收到了jwtToken:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ3aXNlYml0ZWRldGFpbHMiLCJyb2xlIjoiY29hY2giLCJuYmYiOjE3MDk3MTM3ODQsImlzcyI6Indpc2ViaXRlIiwiZXhwIjoxNzA5NzEzNzg4LCJpYXQiOjE3MDk3MTM3ODMsImp0aSI6ImY4Zjc3NzkxLTlmYjgtNDNlNi1iNTFjLTRlOTk1ZDQ2NGZmYyJ9.8sitspmE0N_Ai47qrIQmrp4szVc4mwDANlpN5L0jJbg

当我访问 http://localhost:8080/coach/overview/user 并将此 jwtToken 放入正文时,我收到错误消息说它不是 base64 编码的...

下面是@Getmapping

@GetMapping("/overview/{username}")
private ResponseEntity<PlanDTO> getPlanByClient(@PathVariable String username,
                                                @RequestBody String jwtToken) {
    if (authenticationService.hasAcces(jwtToken)) {

我使用的是 Auth0 库版本 4.2.1 我认为这就是我所掌握的所有信息,我做错了什么?

java jwt auth0
1个回答
0
投票

您可以采取以下几个步骤来排除故障:

确保您在 Postman 的授权标头中正确添加令牌。 仔细检查令牌中是否有多余的空格或字符。 确保您对请求使用正确的 HTTP 方法(GET、POST 等)。

© www.soinside.com 2019 - 2024. All rights reserved.