Token - 사용자를 구별할 수 있는 문자열
1. 최초 로그인(클라요청)시 서버가 생성함
2. 서버가 로그인 한 후 토큰을 만들어 반환
3. 클라이언트는 이후 요청에 아이디 / 비밀번호 대신 토큰(Authorization : Bearer <Token> 형태로 넘김 => 여기서 Bearer은 OAuth에 대한 토큰을 의미한다고 함)을 계속 넘겨서 자신이 인증된 사용자임을 알림
JSON 웹 토큰
- header / payload / signature
- header에는 typ(토큰 타입) / alg(해시 알고리즘 종류)
- payload에는 토큰에 담길 정보들이 들어감
- Signature에는 토큰을 발행한 issuer의 서명이 들어가며, 토큰의 유효성 검사에 쓰임
1. 클라이언트단에서 로그인 요청
2. 서버에서 사용자 아이디 / 비번 비교하여 인증
3. 인증된 사용자일 경우, header.payload 작성 및 시크릿키로 전자서명 => header.payload.signature으로 이어붙여서, base64로 인코딩후 클라에 토큰 반환
4. 클라는 토큰을 계속 가지고 있으면서, 해당 토큰으로 리소스 접근을 요청함
5. 서버 측에서 토큰을 base64로 디코딩함. base64로 얻은 json을 header.payload.signature로 나눔. +
서버에서 header.payload.signature로 새로 생성
6. 클라에서 얻은 signature와 새로 생성한 signature비교하여 같으면 토큰 유효성 검증됨
728x90
반응형
'Web' 카테고리의 다른 글
Thymeleaf - layout:decorate (0) | 2022.02.07 |
---|