일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Bastion Server
- 컴포지트패턴
- goland
- GoF 디자인패턴
- Logrus
- go
- GoF
- Buffered channel
- gitops
- notification system
- AWS Infra
- http 413
- Golines
- Infra
- Helm V3
- intellij ide
- AWS
- 대규모 시스템 설계
- apollo router
- Kubernetes
- 배포 파이프라인
- System Design
- 윈도우키보드
- golang
- 디자인패턴
- Intellij
- body size
- tenneling
- 배포 프로세스
- UnBuffered channel
Archives
- Today
- Total
Fall in IT.
oauth2에 대하여 본문
OAuth2에 핵심은 권한과 인증에 있다.
예를들어, Facebook 간편 로그인 기능을 사용한다고 했을때 페이스북에 저장된 이름, 성별, 생년월일 등의 정보가 필요할 것 입니다.
그렇다면 유저는 페이스북에 내 정보를 달라고 요청할 것 입니다.
페이스북은 해당 페이스북의 계정 정보에 접근 할 수 있는 권한이 있는지와 해당 유저가 맞는지 인증을 합니다.
이때 사용하는 기술이 OAuth2 기술입니다.
OAuth2란?
- 웹. 앱 서비스에서 제한적으로 권한을 요청해서 사용할 수 있는 키(토큰)를 발급해주는 것.
- OAuth는 3rd party를 위한 범용적인 인증 표준 입니다.
- 외부 사이트와 인증기반의 데이터를 연동할 때 아이디/패스워드를 넘기는 방법은 매우 위험합니다.
- 따라서, 사용자 임시 인증을 위한 Token을 제공하여 사용하도록 하는 방법 입니다.
OAuth2를 사용한 권한 획득의 원리와 과정 (위의 OAuth2 Flow 그림 참조)
User(Resource Owner)
- 사용자, 정확하게 말하면 서버 관리자Authorization Server
- Oauth 인증서버Resource Server
- REST API ServerApplication(Client)
- REST API 서버를 사용하는 사용자
OAuth2의 개념 쉽게 이해하기 (위의 OAuth2 Flow 그림 참조)
(OAuth2를 사용하는 대표적인 서비스가 Facebook 로그인 연동이 있습니다. 이를 통해 알아보도록 하겠습니다.)
Resource Owner = 페이스북 서버 관리자
Authorization Server = 페이스북 인증 서버
Resource Server = 페이스북 REST API 서버
Client = 페이스북 REST API 서버를 사용 하는 나
- 내가 앱의 회원가입을 하려고 하는데 Facebook으로 3초만에 회원가입이라는 버튼을 발견합니다.
- 버튼을 누르고 Facebook 로그인 창이 나옵니다. 로그인을 합니다. 위의 그림에서 1번과 2번에 해당합니다.
- 로그인 후 해당 앱에서 "페이스북 정보 접근에 허용하시겠습니까?" 라는 문구가 나옵니다. 위의 그림에서 3번에 해당됩니다.
- 허용을 하게 되면 페이스북 정보에 접근 할 수 있는 access_token을 발급해 줍니다. 위의 그림에서 4번에 해당됩니다.
- 해당 토큰을 사용하여 페이스북의 허용된 데이터에 접근할 수 있게 됩니다.
즉, OAuth2는 권한을 부여하고, 인증을 통해서 발급 받은 토큰을 사용하여 허용된 자원에만 접근 하도록 하는 방식으로 사용됩니다.
참조
- https://vinebrancho.wordpress.com/2014/05/19/oauth2-restapi-server-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EC%95%B1%EC%9D%84-oauth2-0%EC%9C%BC%EB%A1%9C-%EC%A2%80-%EB%8D%94-%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C/
- http://d2.naver.com/helloworld/24942
- http://earlybird.kr/1584
- NodeJS + Passport를 사용하여 OAuth2.0 API 인증하기 (Facebook로그인)
- NodeJS + Passport를 사용하여 OAuth2.0 API 인증하기2 (Facebook로그인)
'기타' 카테고리의 다른 글
Bitbucket을 활용하여 코드리뷰하기 (0) | 2017.08.10 |
---|---|
SourceTree Command Line에서 실행하는 방법 (0) | 2017.07.23 |
ADC(Application Delivery Controller)란? (0) | 2017.03.13 |
apache와 apache tomcat의 차이점 (0) | 2017.02.26 |
애플 개발자 인증서 발급 방법 (4) | 2017.01.31 |
Comments