SpringbootSecurity

SpringbootSecurity/JWT토큰만들기

25G 2021. 10. 4. 21:24

이번 포스팅은 저번 포스팅과 연결돼 있습니다.

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.10.2</version>
</dependency>

위 dependency는 JWT토큰을 만들어주는 라이브러리이다. pom.xml에서 설정해 주기!!

 

어번 포스팅에서 클라이언트가 로그인 요청이 왔을 때 JWT서버에서 해야 하는 설정을 해줬다면 이제 요청이 끝나고 응답을 해줄 때 JWT서버에서 해줘야 할 설정들을 포스팅해보겠습니다.

 

이전 포스팅에서 attemptAuthentication(요청) 함수가 끝이 나고 successfulAuthentication함수가 순차적으로 실행되는데 successfulAuthentication함수에서 JWT토큰을 만들어서 응답을 해주기 전까지 포스팅을 했습니다.

이번 포스팅에서 응답을 하는 것을 포스팅해보겠습니다.

주석에 주요 내용들이 들어가 있고 위 내용이 이해가 안 간다면 이전 포스팅부터 훑고 오시면 이해가 되실 겁니다.

그럼 이제 해더에 토큰이 담겨서 응답이 되는지 포스트맨으로 테스트를 해보면

설정해준 대로 토큰을 잘 응답받은 것을 알 수 있다.

 

그럼 이 토큰이 있으면 로그인이 완료가 됐다는 것이니까

이 토큰을 받아서 중요한 정보를 처리하는 필터가 필요하다.

 

일반적으로 username이랑 pw로 로그인을 해서 정상이 되면

서버에서 세션 ID 생성을 한 후 클라이언트에게 쿠키를 만들어서 세션 ID를 응답을 해준다.

 

그럼 클라이언트가 요청할 때마다 쿠키값 세션 ID를 항상 서버 쪽으로 요청을 하기 때문에 서버는 세션 ID가 유효한지 판단해서 유효하면 인증이 필요한 페이지로 접근하게 하면 된다.

 

하지만 JWT토큰 방식은 세션과 쿠키를 사용하지 않기 때문에

로그인이 정상적으로 됐다면 JWT토큰을 생성하고 클라이언트에게 JWT토큰을 응답한다.(이번 포스팅에서 한 것)

그럼 서버는 JWT토큰이 유효한지를 판단해야 하는데?! 이 판단을 해주는 필터를 만들어야 한다.

그럼 필터를 만드는 포스팅은 다음에 포스팅하겠습니다.