[TIL] 8월 11일
이슈트래커 TokenProvider 테스트 진행시 에러 발생
JWT signature does not match locally computed signature.
에러발생할 때 테스트 코드는 아래와 같다.
@SpringBootTest
class TokenProviderTest {
@Autowired
private TokenProvider tokenProvider;
private Long userId;
@Value("${jwt.secret}")
private String secretKey;
@BeforeEach
void setUp() {
userId = 1L;
}
/**
* 생성한 토큰의 유효기간이 현재 시점 이후임을 보장한다.
*/
@Test
@DisplayName("토큰 생성 기능 테스트 ")
void createToken() {
String token = tokenProvider.createToken(userId);
Jws<Claims> claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
assertThat(claims.getBody().getExpiration()).isAfter(new Date());
}
}
검색을 해보니 토큰 생성할 때 secretKey와 파싱할 때 secretKey가 달라서 발생하는 문제라고 한다.
디버깅 해보니 Jws<Claims> claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
파싱하는 이 부분에서 setSigningKey()의 인자가 바이트로 인코딩된 key를 넣었어야 했는데 그냥 문자열을 넣어서 발생한 것이였다.
인자를 secretKey.getBytes()
로 변경하니 테스트가 잘 통과한다.
오늘 한일
- 코테 스터디 진행, LeetCode 문제 풀었다. 오늘은 만족스럽게 풀지 못했다. 거의 12일만에 코테 문제를 풀었는데 매일매일 풀어야겠다. 이미 전에 마음먹었는데 할일이 많아서 쉽지 않다. 유지하지는 못했지만 지금부터 다시 하면 되니깐...! 하루에 적어도 한문제는 풀어야겠다.
- ITDA 프로젝트 로그인 구현 중, TokenProvider와 TokenExtracter에 대한 테스트 작성, Argument Resolver로 userId 값을 할당하는 것 구현했다. Interceptor와 Argument Resolver에 대한 테스트는 어떻게 할까 고민했는데 로치에게 통합테스트로 진행하면 될거 같다는 답을 들었다.
- 스프링 기본편 강의 듣는 중
Author And Source
이 문제에 관하여([TIL] 8월 11일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeon/TIL-8월-11일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)