OAuth, 엑세스/리프레시 토큰. JWT

김민준·2023년 10월 24일
0

얕은 조사

OAuth

개념

리소스 오너라고 불리는 사용자가 클라이언트(Client : 웹/앱의 이용자가 아니라, 리소스 오너에게서 자원을 받아오고자 하는 사람)라고 부르는 앱과 웹을 사용할 때 페이스북, 구글, 네이버, 카카오, 트위터(X) 등의 리소스 서버의 아이디로 가입하고 로그인하게 해주는 프로토콜이다.
즉, 내가 이미 가지고 있는 계정으로 서드 파티에서도 인증,인가를 받고 자원에 접근하게 해주는 것이다.

배경

클라이언트가 리소스 오너의 권한으로 서버에서 자원을 가져오는 기능을 만들 때 ID와 PW를 받으면 보안 문제가 발생할 수 있습니다.
이를 해결하기 위해 만들어진 접근 권한을 위임하는 표준 프로콜이 바로 OAuth이다.

작동 방식

  1. 클라이언트가 리소스 서버에 자신의 서비스를 등록하고 승인 받는다.
  2. 리소스 오너가 클라이언트의 서비스에서 리소스 서버의 ID로 로그인을 하고, 스코프(권한)를 얼마나 줄것인지에 대해 승인을 한다.
  3. 리소스 서버는 리소스 오너를 Redirect URL로 리디렉션 시킴과 동시에 Authorization Code를 보낸다.
  4. 리소스 오너는 서비스에게 Authorization Code를 보내고, 서비스는 리소스 서버에게 토큰과 교환한다.
  5. 엑세스/리프레시 토큰은 서비스가 저장하며, 오너가 서비스에게 서버의 자원을 요청하면, 서비스가 엑세스 토큰을 이용해서 API를 호출한다.(HTTPS연결)
  6. API 호출이 성공적이라면 서비스는 오너에게 자원을 제공한다.

토큰 두 종류

  • 엑세스 토큰 : 서비스에 접근할 때 권한을 확인받기 위한 토큰. 첫 발급시 리프레시 토큰도 같이 발급한다.
  • 리프레시 토큰 : 엑세스 토큰이 만료 되었을 경우 새로운 엑세스 토큰을 발급받게 해주는 것. 권한 서버에서만 활용되고, 리소스 서버에는 전송되지 않는다.

JWT

토큰을 전송할때 암호화하는 방법 중 하나
세션과 다르게 무상태성을 가진다.
주로 JSON 형태로 전송하며 header payload signiture 의 세가지 요소로 구성된다.
JSON은 비밀키를 몰라도 복호화가 가능하며, 오직 변조 여부만 확인이 가능하기 때문에 JWT의 안에 민감한 정보를 넣어서는 안된다.

참조한 페이지

OAuth 란 무엇일까
OAuth 개념 및 동작 방식 이해하기
OAuth 2.0 개념과 동작원리

profile
node 개발자

0개의 댓글

관련 채용 정보