JWT
Json Web Token의 약자로 Json을 이용하여 사용자 인증을 위한 정보를 저장하는 토큰이다.
Base64로 인코딩 되어 Header, Payload, Signature 3가지 부분으로 이루어진다.
Header
typ : 토큰의 타입
alg : 사용된 암호화 알고리즘
{
"alg": "HS256",
"typ": "JWT"
}
Payload
Payload에는 클레임이라는 토큰에서 사용할 정보들이 담겨 있다.
- iss: 토큰 발급자(issuer)
- sub: 토큰 제목(subject)
- aud: 토큰 대상자(audience)
- exp: 토큰 만료 시간(expiration)
- nbf: 토큰 활성 날짜(not before)
- iat: 토큰 발급 시간(issued at)
- jti: JWT 토큰 식별자(JWT ID)
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Signature
Signature는 토큰을 인증하거나 암호화할 때 사용하는 고유한 코드이다.
Header와 Payload를 Base64로 인코딩하고 비밀 키를 이용하여 Header의 알고리즘으로 암호화 한 뒤에 다시 Base64로 인코딩하여 Signature를 생성한다.
어려웠던 점, 개선할 점
다른 분들의 코드를 참고하면서 로그인 기능을 구현하였다. 이론상의 Jwt에 대한 내용을 어떻게 코드로 바꾸는지에 대해 처음에는 막막했다. 직접 하나씩 코드로 처 보면서 이 메서드가 어떤 기능을 하는지 공부하고 이해해 보려 노력했다.
예전에 배웠던 필터에 대한 개념도 나왔고 스프링 시큐리티에 대한 전체적인 이해가 있어야 더 잘 사용할 수 있을 것 같다. 스프링 시큐리티에 대해 추가적인 공부를 하면서 나 스스로 구조를 설계해 보고 구현해 보아야겠다.
'study' 카테고리의 다른 글
[JSCODE] 1 : N 관계 (0) | 2023.05.31 |
---|---|
[JSCODE] 내 정보 조회 기능 (0) | 2023.05.27 |
[JSCODE] 회원가입, 로그인 기능 추가 (0) | 2023.05.20 |
[JSCODE] Elastic Beanstalk을 통한 배포 (0) | 2023.05.17 |
[JSCODE] 유효성 검사, 예외처리 및 API 문서 작성 (0) | 2023.05.14 |