일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #Swagger
- #Swagger-ui
- Kubernetes
- 모캠
- ecs
- IP
- #api 문서화
- AWS
- SRE
- #Swagger-editor
- Redux
- React.js
- 모두의캠퍼스
- 프로세스 통신
- 카카오게임즈
- 프로세스
- 쿠버네티스
- docker
- #스웨거
- #Swagger-codegen
- server
- Site Reliability engineering
- 기술PM
- React
- Reducer
- 쿠버네티스 컨트롤러
- action
- 북딜
- fluentd
- javascript
- Today
- Total
탕구리's 블로그
OAuth2.0에 대해서 알아보자! 본문
OAuth
- OAuth는 인증을 위한 오픈 스탠다드 프로토콜이다.
- 외부의 서비스 기능을 다른 어플리케이션에서 사용할 수 있다.
- OAuth2.0은 1.0과 호환되지 않지만 인증 절차가 간략하다.
OAuth와 로그인의 차이
- 로그인은 A 서비스의 회원이 A 서비스를 이용하기 위해서 하는 경우이다.
- OAuth의 경우 B 서비스는 A 서비스의 기능을 일부 사용하기 위해 A에서 제공하는 방식을 통해서 인가와 인증을 진행한다.
- B 서비스는 OAuth를 통해 OAuth를 제공하는 서비스의 일부 기능을 사용할 수 있다.
- 예를들어 Facebook을 통해 OAuth를 진행할 경우 Facebook에서 제공하는 API에 대해서 사용이 가능하다.(피드 작성, 친구 목록 불리기 등..)
카카오 플랫폼의 OAuth
- 다음은 카카오 디벨로퍼 사이트에 나와있는 카카오 로그인에 대한 개발 연동 가이드이다.
- 카카오 로그인 기능은 OAuth 2.0을 지원합니다
- 다음은 카카오 플랫폼 서비스에서 제공하는 가장 일반적OAuth 인증의 과정입니다.
> 사용자는 카카오계정으로 로그인 버튼을 클릭합니다.
> 카카오톡 앱에 연결된 카카오 계정의 자격정보(Credentials)를 통해 사용자를 인식합니다.
> 자격정보가 올바르다면 사용자(Resource Owner)로부터 접근 자원에 대한 동의/허가를 얻습니다.
> 위 3까지 성공적으로 수행되었다면 인증 코드(Authorization Code)가 발급됩니다. 해당 인증 코드는 Redirection URI를 기반으로 Third
앱에 전달됩니다.
> Third 앱에서는 전달받은 인증 코드를 기반으로 사용자 토큰(Access Token, Refresh Token)을 요청하고 얻게 됩니다.
카카오에서는 OAuth2.0이 작동하는 방식이며 v2.0에서 사용 가능한 다양한 방식 중에서도 Authorization Code Grant 방식을 사용하는 것 같다.
Authorization Code Grant 방식이란 무엇일까?
- OAuth2.0에서 주로 사용하는 인증방식이다.
- 해당 방식에서 알아야할 개념에는 총 4가지의 큰 개념이 존재한다.
- 우선 아래의 예를 살펴보자
자! 예를 들어 보자 내가 아주 아주 열심히 애플리케이션을 하나 만들었다고 가정하자.
나는 이 애플리케이션에 카카오 로그인을 연동하였다. 사용자가 내 애플리케이션을 이용할 경우 카카오 로그인 버튼을 누름과 함께 카카오 "아이디와 비밀번호"를 입력하라는 팝업(?)이 하나 뜰 것이다.
카카오 서비스에 로그인하는 과정이 OAuth에서 "인증" 과정이며 이 과정을 통해 "인가 / 허가" 또한 진행되는 것 같다.
그 후 나의 앱은 카카오 플랫폼에서 제공하는 다양한 기능들을 사용할 수 있다.(친구 목록 불러오기, 카카오 스토리 작성 등..)
- 여기서 Resource Owner, Client, Authorization Server, Resource Server는 각각 누구일까?
- Resource Owner : 각종 정보의 주인, 일반적으로 서비스를 이용하는 사용자가 된다.
- Client : 여기서 Client는 OAuth를 사용하는 주체. 즉, 내가 만든 애플리케이션이 된다.
- Authorization Server : 인증과 인가 절차를 담당하는 제3의 서버이다.
- Resource Server : oAuth의 사용을 통해 Client가 원하는 보호된 정보(Resource)를 제공해주는 주체이다.
Auth Code(Credential), AccessToken, RefreshToken
- 다음은 위의 세 가지 주제에 대해 정리해보자
- 위의 내용과 시퀀스 다이어그램을 통해 우리는 사용자로부터 입력받은 정보를 통해 Authorization Server를 통해 "인증"과 "인가" 과정을 거쳐야 한다.
- 이 과정에서 Client는 Authorization Server로부터 Credential/ Authorization Code를 받게 된다.
- Client는 해당 코드를 통해 AccessToken를 발급한다.
- AccessToken를 통해 Client는 Resource에 접근할 수 있는 권한을 얻게 된다.
- AccessToken는 일정 기간 후 사용권한이 expired 되고, 우리는 RefreshToken을 통해 새로운 AccessToken를 발급받게 된다.
이렇게 OAuth가 무엇인지, 카카오 플랫폼에서는 어떤 인증방식을 사용하고 있는지, 해당 인증 방식은 어떤 과정을 통해 기능을 제공하는지 알아보았다. 사실 이 내용을 지금까지 세 번은 찾아본 거 같은데 볼 때마다 새로운 이유가 무엇인지 너무나 궁금하다. 역시 가볍게 훑어본 건 기억이 잘 안 나는 거 같다. 앞으로 더 꼼꼼하게 공부하고 정리하는 습관을 가져야겠다.
'Conception' 카테고리의 다른 글
RPC(Remote Procedure call)에 대해 알아보자! (3) | 2020.05.03 |
---|---|
Redis & memcached 정리 (0) | 2019.10.28 |
스트림과 버퍼에 대해 알아보자! (4) | 2018.12.17 |
하태핫해! 핫한 Webpack에 대해 알아보자! (0) | 2018.12.15 |
면접 대비 개념 공부 2017/06/13 (0) | 2017.06.13 |