Signed Claims JWSs are not supported 에러
Signed Claims JWSs are not supported 에러
Signed Claims JWSs are not supported 에러
사용자의 아이디와 비밀번호 값을 스프링 시큐리티 필터를 이용해서 인증 처리 테스트를 하던 중 위의 이미지와 같은 에러가 발생하였다.
해결 방안
- 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.