Home /Web/ JWT
Post
Cancel

/Web/ JWT



0. 쿠키와 세션


쿠키

최초 로그인 시 ID, PW를 가지고 로그인을 하고 난 이후
별 다른 ID, PW 없이 로그인이 된 상태에서 요청을 날릴 수 있다.

로그인 시 매번 ID, PW를 작성해서 전달해야한다.


쿠키 + 세션

ID, PW를 주고받는 대신
인증 정보 자체를 특정 세션 저장소에 저장하고,

이 값을 쿠키에 담아
클라이언트가 쿠키를 요청할 때마다
세션 저장소에 있는 정보랑 동일한지로 로그인을 확인


1. JWT


  • 공개/개인 키를 쌍으로 사용하여 토큰에 서명할 경우
    서명된 토큰은 개인 키를 보유한 서버가 이 서명된 토큰이 정상적인 토큰인지 인증

  • JWT는 일반적으로 클라이언트와 서버, 서비스와 서비스 사이 통신 시
    권한 인가(Authorization)을 위해 사용하는 토큰

  • Json 포맷을 이용하여 사용자에 대한 속성을 저장하는
    Claim 기반의 Web Token

  • 인증에 필요한 정보들을 Token에 담아 암호화시켜 사용하는 토큰



2. JWT를 처리하는 곳


로그인을 하게되면

서버에서 회원의 정보와 시그니처의 시크릿 키를 이용해 access 토큰과 refresh 토큰을 발급한 후에

클라이언트에게 넘겨주고

리프레쉬는 암호화하여 db에 저장해줍니다.

3. JWT 재발급 방식


사용자 로그인 시 서버는 사용자 인증을 완료하고 외부에 노출되어도 문제가 없는 인증관련 정보(사용자 ID, 권한 등)를 JSON 형태로 만듭니다.

이 데이터를 base64 인코딩을 해서 문자열을 만들고, 미리 정한 시스템의 SecretKey를 이용하여 서명 문자열을 생성합니다.

4. 어떤 방식으로 검증


검증은 이 토큰이 서버가 발급한 토큰이 맞는지 확인합니다.



5. JWT 재발급 주기 처리


재발급 주기는 평균적으로 access 토큰은 2시간 refresh 토큰은 2주입니다.



6. 다른 API 서비스 호출시 어떻게 잡아서 인증을 처리


api 통신을 하게되면 클라이언트가 header에서 엑세스 토큰을 담아서 보내고 서버에서 검증한 뒤 API 로직이 수행됩니다.




(참고)



공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.

This post is licensed under CC BY 4.0 by the author.