JWT
JSON 형식의 데이터를 문자열로 인코딩한 토큰
Header
1. 암호화에 사용된 알고리즘, 토큰 형식 등 토큰에 대한 정보를 저장.
PayLoad
1. 토큰이 실질적으로 저장하려는 데이터(만료시간, 발급시간, 토큰 고유값, 토큰이 인증하려는 유저 등, 저장하고 싶은 데이터 종류의 제한 없음).
2. 토큰 만료시간, 발급시, 토큰 아이디를 페이로드에 넣을땐 exp, iat, jti같은 공식명을 사용해야 한다.
3. 암호화된 내용이 아니기 때문에 비밀번호와 같이 보안에 민감한 정보는 넣지 않는 것이 좋다.
Signature
1.토큰을 믿을 수 있는지 확인하기 위한 데이터 저장
2. 헤더와 페이로드 내용은 인코딩한 내용과 시크릿 키를 헤더의 알고리즘을 통해 암호화한 내용.
3. 서버에서는 클라이언트에서 보낸 헤더와 페이로드, 서버에서만 알고 있는 시크릿 키를 이용해서 직접 시그니처 부분을 만들어 본 후, 토큰의 시그니처가 일치 한다 해당 토큰은 시크릿 키를 알고있는 서버에서 발급했다는 것을 확인할 수 있음.
사용
JWT 토큰은 보통 클라이언트에서 리퀘스트 헤더의 Authorization: Bearer <token> 형식으로 넣어 보낸다. 그 이후, 서버에서 JWT를 추출하여 헤더로부터 유효성을 검증한 후, 페이로드에서 정보를 추출하여 인증을 진행한 후, 요청한 리소스에 대한 권한을 부여한다.
'User function' 카테고리의 다른 글
Authentication (인증) (0) | 2024.01.21 |
---|