Blog

[CS]36 JWT, Refresh, Access Token에 대해서 설명해주세요.

Author
Summary
Category
Study
Tags
CS
PinOnMain
Favorite
Memory
Memory Date
2023/11/01
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
4 more properties
JWT, Refresh, Access Token에 대해서 설명해주세요.
우선 Access Token과 Refresh Token은 보안 및 인증 프로세스에서 중요한 역할을 하는 방법으로 볼 수 있습니다.
Access Token:
Access Token은 보통 사용자가 어떤 자원에 접근할 때, 해당 자원에 대한 권한을 나타내는 토큰입니다.
일반적으로 짧은 수명을 갖고 있어, 보안을 강화합니다.
Refresh Token:
Refresh Token은 Access Token이 만료된 후에 새로운 Access Token을 얻기 위해 사용되는 토큰입니다.
Access Token은 일반적으로 짧은 유효기간을 갖지만, Refresh Token은 더 긴 유효기간을 가집니다.
사용자가 로그인 상태를 계속 유지하고, 새로운 Access Token을 얻을 수 있게 합니다.
여기서 위 토큰 방법들을 사용하기 위해 JSON 형태 값들로 다룰 수 있는 기술인 JWT를 사용할 수 있습니다.
JWT는 간단하게 비밀키를 이용하여 서명된 JSON 형태의 데이터입니다. 여기에 사용자 인증 정보를 넣어서 토큰을 발급해주면 추후 인증이 필요한 리소스에 접근 시 사용자가 서버에 토큰을 포함해서 전송하여 서버측에서는 복잡한 인증 과정 없이 토큰만으로 사용자를 인증 및 인가할 수 있는 기술입니다.
추가질문 : 인증 프로세스를 간단히 설명해주세요
일반적인 인증 워크플로우는 다음과 같습니다:
1.
사용자가 로그인하면서 인증 서버로부터 Access Token과 함께 Refresh Token을 받습니다.
2.
Access Token을 사용하여 자원에 접근합니다.
3.
Access Token이 만료되면 Refresh Token을 사용하여 새로운 Access Token을 발급받습니다.
4.
이를 반복하여 지속적으로 자원에 접근할 수 있습니다.
여기서 JWT를 사용한다고 하면, 토큰의 구조가 기존의 Access Token과는 다르게 헤더, 페이로드, 시그니처로 이루어진 형태로 표현되고, 이를 통해 토큰의 유효성을 서버에서 검증할 수 있습니다. 이는 토큰의 안전성과 데이터의 구조화를 동시에 활용할 수 있는 장점을 제공합니다.
추가질문 : JWT의 구성과 검증방법
JWT는 헤더, 페이로드, 서명 세 가지 정보를 base64로 인코딩한 값을 콤마('.')를 사이에 두고 이어붙인 형태로 생성됩니다.
헤더: JWT 서명에 사용된 알고리즘이 저장됩니다.
페이로드: 토큰에 담긴 주체(Subject), 만료일(exp), 생성자(iss) 등이 클레임이 저장됩니다.
시그니처: 헤더와 페이로드를 각각 base64로 인코딩한 후 콤마로 이어붙입니다. 그리고 이를 헤더에 명시된 알고리즘으로 암호화한 값을 저장합니다.
비대칭키 알고리즘은 서버가 토큰을 생성할 때 개인 키로 서명하고, 검증할 때는 공개 키를 사용하여 서명을 확인합니다. 이를 통해 토큰이 정당한 서버에서 생성된 것인지를 확인할 수 있습니다.