본문 바로가기
오류를 개발새발

Signed Claims JWSs are not supported. : parseClaimsJwt() 와 parseClaimsJws() 의 차이

by 휴일이 2023. 3. 24.

 

해당 오류를 번역기로 돌려보면(응애 나 아기 고졸 영어 못함)

 

서명된 클레임 JWS 는 지원되지 않는다고 뜬다..

 

자 이게 무슨 뜻일까요?

 

 

나는 Claims 을 얻는 코드를 JwtParser 를 이용해 이렇게 작성했다

public Claims getOldClaims(String token) {
    Claims claims = jwtParser.parseClaimsJwt(token).getBody();
    return claims;
}

 

결론부터 말하면

.parseClaimsJwt() 이 부분을 .parseClaimsJws() 로 바꿔주면 무사히 동작한다

 

.parseClaimsJwt() 는 서명되지 않은 jwt 를 파싱할 때 사용한다

그냥 jwt의 payload 부분만 뭔지 알 수 있는 것이다

 

하지만

.parseClaimsJws() 는 서명된 jwt 를, 즉 jws(json web signature)를 검증할 때 사용한다

jwt 에 포함 된 정보가 변조되었는지 아닌지 검증할 수 있는 메서드인 것이다

그래서 얘는,

1. jwt 의 서명을 검증하고

서명이 유효하다면

2. 해당 jwt의 payload를 claims 객체로 변환해준다

 

그러니 보통은 .parseClaimsJws() 를 쓰는 것이 타율이 맞을 것이다 ^0^/

 

 

 

그러면 난 이걸 고쳤으니

다른 오류가 생겨서

그걸 해결하러 이만....^^7

728x90