서명 된 토큰은 그 안에 포함 된 클레임의 무결성을 확인할 수 있다.
Session을 사용하지 않고 Token을 사용하기 때문에 어느 서버를 들어가든
Secret key만 알고있으면 검증절차를 통해 접근이 가능하다.
JWT 토큰은 아무곳에서나 만들 수 없고 오직 서버에서만 만들 수 있다.
세션이 담던 정보를 JWT 페이로드에 담을 수 있기 때문에 토큰 하나로 해결되는 부분이 다양하게 많다.
Hash : 단방향 암호화로 암호를 잊어버리게 되면 비밀번호 초기화를 해야한다.
Base64 : 양방향 암호화로 암/복호화가 가능하다.
예) xxxxx.yyyyy.zzzzz
구현) Header.Payload.Signiture
Header
사용한 알고리즘, 토큰 타입을 담음
Payload(=데이터 저장소로 생각해도 됨)
보편적으로 비공개 클레임(개인 클레임, 즉 유저아이디같은 변경되지 않는 비공개 값)을 담음
Signiture(서명)
서버 키 값, 헤더에 지정한 알고리즘으로 암호화 한 Header + Payload
로그인
암호화 시 header에 지정한 알고리즘 방식으로 암호화해야 한다.
서버 접근
로그인
구조 : Header.Payload.Signiture
Header : RSA
Payload : {userId : AJKB35JBK10492JSAP..}
Signiture : RSA private key로 암호화(Header + Payload)
서버 접근
RSA private key로 암호화 된 Signiture를 풀어서 검증만 하면 됨