토큰 기반 인증 - JWT
1.Access Token
2.Refresh Token
Access token
은 각종 정보들(연락처, 사진, 이메일 등)이 보호된채 접근할 수 있는 권한부여에 사용한다. 클라이언트가 처음 인증(로그인)을 받게 될 때, 실제로 권한을 얻는 데 사용하는 토큰이다. 즉, 권한을 부여하는데엔 Access token만 필요하다. 하지만, 악의 적인 유저의 공격 때문에 짧은 유효기간을 주어 탈취 되어도 사용할 수 없도록 하는 것이 좋다. 여기서 Refresh Token
을 사용하여 새로운 Access token을 발급한다. 이 때, 유저는 다시 로그인을 할 필요가 없다.
JWT의 구조는 다음과 같이 이루어져 있다.
Header
부분은 이것이 어떤 종류의 토큰인지, 어떤 알고리즘으로 할지가 JSON형태로 적혀있다. 이 JSON 객체를 base64 방식으로 인코딩된다.
{
"abc": "abc123",
"qwe": "qwe456"
}
Payload
부분에는 정보가 담겨져 있다.각정 정보들에 대한 권한을 담을 수도 있고, 필요한 데이터를 이곳에 암호화 시킬 수 있다.
{
"name": "Hong"
"sub": "154545345"
}
Signature
부분에는 base64로 인코딩된 부분을 원하는 비밀키를 사용하여 암호화한다.
DYSHA256(base64UrlEncode(header) + '.' + base64UrlEncode(payload), secret);
새로 다운받은 A
앱이 Gmail과 연동되어 이메일을 읽어와야 한다고 가정해보자.
access
와 refresh
토큰을 생성하는데 토큰에 담길 payload는 유저를 식별할 정보, 권한이 부여된 카테고리가 될 수 있다.