개발지식

Access Token이란?!

우루쾅 2024. 3. 13. 22:55
728x90
반응형
SMALL

Access Token이란?

Access Token은 사용자나 컴퓨터 프로그램이 접근할 권리를 증명하는데 사용되는 문자열이며, 일반적으로 인터넷에서 사용자 인증 및 권한 부여를 위해 주로 사용됩니다. 예들 들어, 소셜 미디어 플랫폼이나 웹 애플리케이션에서 사용자가 로그인할 때, 서버는 사용자의 인증 정보를 확인한 후 엑세스 토큰을 발급합니다. 그리고 사용자가 이후 서비스를 이용할 때마다 이 토큰을 사용하여 자신의 인증 상태를 증명하게 됩니다. 

 

권한을 부여받는 데에는 Access Token만 있으면 인증이 가능 하지만, 해커에 의해 토큰이 탈취된다면, 로그인을 하여 여러 나쁜 행위들을 할 수 있습니다. 그래서 주로 Access Token의 만료기간을 짧게 주고 시간이 지나면 만료되어 사용할 수 없게끔 합니다. 이 때 Access Token이 만료될 때마다 Refresh Token을 통해 말 그대로 Access Token을 refresh 합니다.

 

각각의 Token이 처리되는 방식

① 로그인 인증에 성공한 클라이언트는 Access Token과 Refresh Token을 서버로 부터 받습니다.

② 클라이언트는 Access Token과 Refresh Token을 로컬에 저장해놓습니다.

③ 클라이언트는 헤더에 Access Token을 넣고 API 통신을 합니다.

④ 일정 시간이 지나 Access Token의 유효기간이 만료됩니다.

⑤ 헤더에 Access Token 대신 Refresh Token을 넣어 API를 재요청합니다.

Refresh Token으로 사용자의 권한을 확인한 서버는 응답쿼리 헤더에 새로운 Access Token을 넣어 응답합니다.

⑦ 만약 Refresh Token 도 만료되었다면 서버는 동일하게 401 Error code를 보내고, 클라이언트는 재로그인을 하여 토큰을 재발급받아야합니다.

 

JWT(JSON Web Token)와 Access Token의 비교

JWT(JSON Web Token)와 Access Token은 서로 연관된 개념이지만 조금 다릅니다.

JWT가 엑세스 토큰을 구현하는 방식 중 하나라고 볼 수 있습니다.

 

구분 JWT (JSON Web Token) 액세스 토큰 (Access Token)
정의 JSON 객체를 사용하여 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방식입니다. 사용자가 인증을 완료한 후 자원에 접근할 수 있는 권한을 부여받는 데 사용되는 크리덴셜(증명 정보)입니다.
사용 목적 인증 및 정보 교환에 주로 사용됩니다. 정보가 디지털 서명되어 있어 정보의 무결성을 보장합니다. 사용자가 시스템이나 네트워크 리소스에 접근할 수 있는 권한을 증명하는 데 사용됩니다.
형태 JWT는 특정 형식(JSON)을 가지며, 세 부분(헤더, 페이로드, 시그니처)으로 구성됩니다. 형태가 정해져 있지 않으며, 문자열, JWT, 다른 형식의 토큰 등 다양한 방식으로 구현될 수 있습니다.
내용 발급자, 만료 시간, 주제 등 사용자와 관련된 정보를 포함할 수 있습니다. 일반적으로 사용자의 식별 정보나 권한 범위 등 인증 후 접근 권한에 대한 정보를 포함하지만, 구체적 내용은 구현에 따라 다릅니다.
사용 예시 OAuth에서 액세스 토큰으로 사용될 수 있으며, 또한 정보 교환의 수단으로도 사용될 수 있습니다. 웹 애플리케이션, API 접근 권한 부여, 소셜 미디어 로그인 등 다양한 인증 시스템에서 사용됩니다.
보안 정보가 디지털 서명되어 있어, 정보의 무결성 및 변조 방지를 제공합니다. 암호화를 통해 정보를 보호할 수도 있습니다. 보안 수준은 구현 방식에 따라 다르며, JWT나 다른 안전한 방식으로 구현될 수 있습니다.

 

 

 

 

한줄정리

Access Token은 사용자가 인증 과정을 성공적으로 마친 후, 리소스에 접근할 수 있는 권한을 부여받기 위해 사용되는 Token 값입니다.

 

 

출처

김민주 - https://velog.io/@chuu1019/Access-Token%EA%B3%BC-Refresh-Token%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%A0%EA%B9%8C

hyeongirlife - https://velog.io/@boo1996/Token

728x90
반응형
LIST

'개발지식' 카테고리의 다른 글

스프링 웹 계층에 대하여..  (2) 2024.03.18
사용자 중심의 서비스 개발 방법  (2) 2024.03.15
롬복(Lombok)이란?!  (2) 2024.03.12
RabbitMQ란?!  (2) 2024.03.11
프라이빗 VS 퍼블릭 클라우드  (2) 2024.03.10