[JWT] 토큰 환경 설정 및 생성
안녕하세요!
프뚜(프로그래머 뚜)입니다!
[개발 환경]
- OS: windows 10 64bit
- JAVA: 11
- IDE: IntelliJ
JWT(Java Web Token) 환경 설정 및 생성하는 방법에 대해 포스팅하려고 합니다.
JWT Procedure은 아래와 같습니다.
1. Client ->Server : Login(POST) 요청을 합니다.
2. Server : Login 정보가 맞다면 CreateJWTToken을 생성합니다.
3. Server -> Client : 클라이언트에 JWT를 전달합니다.
4. Client ->Server : 서버에 데이터 요청합니다.(해더에 JWT토큰을 담아놓습니다.)
5. Server : 클라이언트에서 보내준 JWT 유효성 검증을 합니다.
6. Server : 요청 데이터에 대한 결과를 전송해줍니다.
JWT Structure
해더 : 토큰 타입, 해싱 알고리즘
페이로드 : 토큰에 담을 정보(클레임)
시그니처 : 비밀키 해싱 값
JWT 설정
gradle 프로젝트 -> build.gradle
maven 프로젝트 -> POM.xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt/0.9.1
환경에 맞는 설정을 가져올 수 있습니다.
Controller
Login 요청이 정상적으로 되었다고 가정하에 userId를 넣고 createToken을 합니다.
Service
Global.EXPIRED_TIME에는 60 * 1000 * 60(한시간)으로 세팅 되어있습니다.
Front
정상적으로 토큰이 발생되었습니다.
이후 토큰을 헤더(Authorization)에 넣고 서버에 데이터 요청을 하면 됩니다.
정상적인 토큰인지 확인 후 payload 데이터 확인은
를 참조하시면 됩니다.
궁금하신 부분 또는 문제가 생긴 부분에 대해서 댓글 남겨주시면 빠르고 정확한 답변드리겠습니다.