Post

Signed Claims JWSs are not supported 에러

Signed Claims JWSs are not supported 에러

Signed Claims JWSs are not supported 에러

2_27_jwt-jws-error

사용자의 아이디와 비밀번호 값을 스프링 시큐리티 필터를 이용해서 인증 처리 테스트를 하던 중 위의 이미지와 같은 에러가 발생하였다.


해결 방안

  • JWTUtil(에러 수정 전)
1
2
3
4
5
6
7
8
9
public Map<String, Object> validateToken(String token)throws JwtException{
        Map<String,Object> claim = null;

        claim = Jwts.parser()
                .setSigningKey(key.getBytes()) 
                .parseClaimsJwt(token) // --------------틀린 부분--------------
                .getBody();
        return claim;
    }

원인은 단순히 오탈자 문제였는데 parseClaimsJwt을 원래는 parseClaimsJws으로 작성을 해줬어야 했는데 자동완성 기능 때문에 앞의 코드가 작성된 것 이었다.
물론 parseClaimsJwt -> parseClaimsJws으로 수정해서 테스트를 하면 에러가 발생하지 않는다.


parseClaimsJws와 parseClaimsJwt의 차이점

  • parseClaimsJws(it) : 이 메서드는 주어진 JWT(토큰)를 파싱하고, JWT가 서명된 JWT (JWS)임을 가정한다.
    즉, JWT가 서명되어 데이터 무결성이 확인되어야 한다.
  • parseClaimsJwt(it) : 이 메서드는 주어진 JWT를 파싱하며, JWT에 서명 여부에 대한 가정을 하지 않는다.
    즉, JWT가 서명되었는지 여부를 확인하지 않고 데이터를 파싱한다.

This post is licensed under CC BY 4.0 by the author.