[Spring Security] JWT 검증

·2022년 11월 25일
2

SpringSecurity

목록 보기
11/13
post-thumbnail

JWT 검증

JWT의 검증 기능은 인증된 사용자가 애플리케이션의 리소스에 접근할 때마다 request의 header에 포함된 JWT를 검증할 때 사용된다.

JWT 검증 기능 구현

JwtTokenizer클래스에 검증 메서드 추가

verifySignature() 메서드는 JWT에 포함되어 있는 Signature를 검증해 JWT의 위/변조 여부를 확인한다.
jjwt 라이브러리는 Secret Key를 이용해 내부적으로 Signature를 검증한 후 검증에 성공하면 JWT를 파싱해서 Claims를 얻을 수 있다.

🧐 파싱이 뭐여
많은 정보 중에서 원하는 데이터 조각들을 뽑아서 하나의 데이터로 만드는 것

setSigningKey()

서명에 사용된 Secret Key를 설정하는 메서드

parseClaimsJws()

JWT를 파싱해서 Claims를 얻는 메서드

해당 메서드는 검증을 위한 메서드 임으로 리턴값이 별도로 필요하지 않다!
parseClaimsJws() 메서드에 사용된 파라미터 jws 는 Signature를 포함한 JWT라는 뜻

JWT 검증 기능 테스트

JwtTokenizer클래스에 검증 기능 테스트 추가 구현

verifySignatureTest()

💡JwtTokenizer클래스에 구현한 verifySignature() 메서드가 잘 실행되는지 테스트

Exception의 발생 여부만 확인한다.

verifyExpirationTest()

💡JWT 생성 시 지정된 만료일시가 지나면 정말 만료가 되는지에 대한 테스트

생성되는 JWT의 만료 시간를 아주 짧게 준 후 verifySignature() 검증을 진행하고, 만료 시간이 지난 후 두번째 verifySignature() 검증을 진행했을 때 ExpiredJwtException이 발생하면 정상적으로 JWT가 만료되었다고 볼 수 있다.

getAccessToken(int timeUnit, int timeAmount)

💡Access Token 생성 메서드

🧐 차근차근 정리해보니 조금 이해가 될 것 같기도

profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글