AccessDeniedException в токене JWT Springboot - PullRequest
0 голосов
/ 26 февраля 2020

Я создаю JWT с моим пользователем и его ролями, в отладке я могу проверить, что это правильно, затем я защищаю свой контроллер, но я получаю ошибку AccessDeniedException, я думаю, это потому, что я не ломаю токен jwt для извлечения претензий я пробовал это, но я получаю другие ошибки --->

private static final String AUTHORITIES_KEY = "auth";

static void addAuthentication(HttpServletResponse res, Authentication authentication) {

       String token = Jwts.builder()
        .setSubject(authentication.getName())

        .setExpiration(new Date(System.currentTimeMillis() + timeout))

    .signWith(SignatureAlgorithm.HS512, key)
    .claim(AUTHORITIES_KEY, authentication.getAuthorities()) // the rol is "ROLE_Consulta"
    .compact();


       res.addHeader("Authorization", "Bearer " + token);
}



static Authentication getAuthentication(HttpServletRequest request) {

    String token = request.getHeader("Authorization");

    if (token != null) {
        String user = Jwts.parser()
                .setSigningKey(key)
                .parseClaimsJws(token.replace("Bearer", "")) 
                .getBody().getSubject();

             Claims claims = Jwts.parser()
                        .setSigningKey(key)
                        .parseClaimsJws(token.replace("Bearer", "")) 
                        .getBody();

             Collection authorities  = Arrays.stream(claims.get(AUTHORITIES_KEY).toString().split(","))
                            .map(SimpleGrantedAuthority::new)
                            .collect(Collectors.toList());

        return user != null ? new UsernamePasswordAuthenticationToken(user, null, authorities) : null;
    }
    return null;
}

Я могу создать JWT, и я могу проверить мой JWT, это правильно, но когда я изменяю в своем контроллере:

  @Secured("ROLE_Consulta")

Я получаю сообщение об ошибке AccessDeniedException, но при отладке я вижу свои полномочия var: и я вижу "ROLE_Consulta"

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...