Top Banner
박민우PD 기술전략팀 2012/07/18 기획자를 위한 OAuth, 모바일 세상의 딱풀
44

기획자를 위한 OAuth

Nov 07, 2014

Download

Documents

Minwoo Park

KTH 화성에서온 개발자, 금성에서온 기획자 시리즈
기획자를 위한 쉬운 OAuth 소개
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 기획자를 위한 OAuth

박민우PD

기술전략팀

2012/07/18

기획자를 위한 OAuth, 모바일 세상의 딱풀

Page 2: 기획자를 위한 OAuth

2

수많은 패스워드

수많은 서비스들..

Page 3: 기획자를 위한 OAuth

Password

PW

비번 패스워드!

Page 4: 기획자를 위한 OAuth

4

① 서비스별 다른 패스워드 사용

② 패스워드는 2주마다 꼭 교체

③ 패스워드는 - 8글자 이상 - 개인정보 관련 키워드 X - 특수문자사용

스마트한 김모씨

Page 5: 기획자를 위한 OAuth

한 곳에서 ID/PW 관리/인증

OpenID authentication(인증)

Page 6: 기획자를 위한 OAuth

저것 만으로는 우리 API 제어에 적합하지 않은데..

2006년 11월 어느날..

우리는 인증 (Authentication)뿐만 아니라 API 사용 권한 부여(Authorization) 할 수 있는 방법도 필요해!

Oauth = Authentication + Authorization

나, 트위터..

Page 7: 기획자를 위한 OAuth

OAuth란?

1. 아임인에 트위터 비번저장 없이 발도장 트윗 날리기 2. 트위터앱에 트위터 비번저장 없이 트위터 쓰기

3초

Page 8: 기획자를 위한 OAuth

service provider

consumer

트위터 API

어떤앱

사랑의 (API) 트라이앵글

user

Page 9: 기획자를 위한 OAuth

• 서비스에 패스워드 전달없이 인증 • 필요한 기능만 부여 할 수 있음 • 언제나 다시 권한 취소 가능 • 패스워드 변경시에도 유효

“인증 토큰”

An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.

- oauth.net

HOW?!

Page 10: 기획자를 위한 OAuth

필요한 기능만 제한적으로 부여 할 수 있음

인증 토큰? 토큰?

Page 11: 기획자를 위한 OAuth

인증 토큰 (Access Token)

토큰 (Token)

토큰 (Token)

토큰 (Token)..

API를 사용하는 서비스(consumer)에 비밀번호를 저장하지 않고 인증 토큰을 저장해 놓고 인증토큰(Access Token)으로 API 사용

OAuth

Page 12: 기획자를 위한 OAuth

1시간만 유효함 1km만 주행가능

트렁크는 열 수 없음

발렛파킹!

인증 토큰

나, 벤츠..

Page 13: 기획자를 위한 OAuth

오~ 새로운 트위터 앱이 나왔군 써볼까?

이 듣보잡 앱에 내 트위터 비밀번호를

저장하라고?

API 사용자

Page 14: 기획자를 위한 OAuth

이제 API를 완성했으니 우리 서비스가 널리 퍼질 수 있겠지?

우리 서비스 ID/PW 가 듣보잡 앱에 저장되어야

하는건가?!

API 서비스 제공자

Page 15: 기획자를 위한 OAuth

How does it work?

Page 16: 기획자를 위한 OAuth

service provider

consumer

트위터

어떤앱

user

① Consumer가 Service Provider에 등록한다

② User가 Service Provider에 로그인한다

Page 17: 기획자를 위한 OAuth

service provider

consumer

트위터

어떤앱

user

① Consumer가 Service Provider에 등록하고 Consumer key를 받아서 저장

② User가 Service Provider에 로그인하고 인증토큰(Access Token)을 Consumer에 저장한다

조금 더 자세히..

Page 18: 기획자를 위한 OAuth

Consumer key =

API key 라고 불리기도.. .

참고로..

Page 19: 기획자를 위한 OAuth

Consumer가 Service provider에 등록하기

Page 20: 기획자를 위한 OAuth

Consumer가 Service provider에 등록완료

Page 21: 기획자를 위한 OAuth

service provider

consumer

트위터

어떤앱

user

① 트위터로 로그인 하겠어요-

② 사용자를 트위터 로그인 화면으로..

USER 로그인

③ 트위터 로그인

④ Consumer에 인증토큰 전달

Page 22: 기획자를 위한 OAuth

service provider

consumer

트위터

어떤앱

user

트위터로 발도장 공유!

인증 토큰으로 트위터 API 사용

앱 사용시

Page 23: 기획자를 위한 OAuth

Oauth 프로세스

Page 24: 기획자를 위한 OAuth

사용자의 관점

Page 25: 기획자를 위한 OAuth
Page 26: 기획자를 위한 OAuth

트위터 주소창으로 이동

부여할 권한정보

권한을 요청하는 앱 정보

로긴 안되있음

로그인 창

Page 27: 기획자를 위한 OAuth

현재 로긴된 트위터 사용자

로그인 되어있는 경우

Page 28: 기획자를 위한 OAuth
Page 29: 기획자를 위한 OAuth
Page 30: 기획자를 위한 OAuth

권한 취소

https://twitter.com/settings/applications

Page 31: 기획자를 위한 OAuth

이걸 어느 세월에 다 구현하나요?

나 개발자..

왠만한 언어용으로 라이브러리 제공!

Page 32: 기획자를 위한 OAuth

Oauth 시나리오 1

이런.. 트위터 로그인 해놓은 내 핸드폰 분실했네!

트위터/페이스북 설정에서 해당 앱의 접근 권한 취소 (revoke) (트위터 비밀번호를 바꿀 필요 없음)

Page 33: 기획자를 위한 OAuth

Oauth 시나리오 2

트위터 비밀번호 노출되었어요! 비밀번호 변경하면, 모든 앱들 다시 인증?

비밀번호 바꿔도 API사용 서비스(consumer)에 저장된 인증토큰은 그대로 유효 서비스 사용 지장 없음

Page 34: 기획자를 위한 OAuth

Oauth 시나리오 3

트위터 로그인을 해놓은 Path 가 해킹당해서 모든 토큰이 해커에게 노출 되었다면?

트위터가 Path를 인증 거부한다. Path에 저장된 모든 트위터 토큰 인증 거부됨

Page 35: 기획자를 위한 OAuth

아임인 핫스팟에서 바로 아임인 저장하기

(service provider) 아임인

(consumer) 아임리얼맛집

유저

Oauth를 통한 API접근

모바일 앱 사용

Page 36: 기획자를 위한 OAuth

푸딩카메라에서 바로 푸딩투 저장하기

(service provider) 푸딩투

(consumer) 푸딩카메라

유저

Oauth를 통한 API접근 모바일 앱 사용

현재는 푸딩 카메라에서 푸딩투 앱을 호출 방식

Page 37: 기획자를 위한 OAuth

1.트위터 앱이 트위터 Oauth 사용

2.어떤 앱이 컨텐츠를 트위터로 내보내기 위해 Oauth 사용

3.자신의 서비스를 트위터 아이디로 가입하게 open

결국은 다 같은 OAuth

Page 38: 기획자를 위한 OAuth

Oauth 의 버젼들

1.0 보안 문제가 있는 버전. 절대로 사용하면 안됨 (아마 spec을 찾을 수도 없겠지만..)

1.0a 안정적이고 사용해도 됨 Http상에서도 동작하도록 복잡한 암호화를 함 Https가 아닌 환경에서도 동작하나.. 복잡하다

2.0 IEFT에 의해서 계속 표준화 진행중 3가지 인증방법 제공 - bearer token 방식은 안정적이며 구현이 간단. SSL 필요 - 다른 2가지는 계속 수정 중 (MAC token, SAML)

Page 39: 기획자를 위한 OAuth

Oauth는 API 확산을 위해 필수 API 서비스 프로바이더는 모바일과 웹앱을 위해 Oauth 제공

1.0a 2.0

(대표적인) OAuth 서비스 프로바이더

Page 40: 기획자를 위한 OAuth

API가 https를 사용하나요?

Oauth 2.0의 bearer token 방식을 쓰세요 (Facebook 도 쓴답니다)

Oauth 1.0a를 쓰세요 (Twitter 방식)

어떤 Oauth 버전을 사용해야 하나요?

Yes

No

Page 41: 기획자를 위한 OAuth

Oauth 는 만병통치약인가?

Page 42: 기획자를 위한 OAuth

Oauth가 적절하지 않은 경우

1.사람이 개입되지 않는 서비스 서버-서버 간 통신 유저가 개입되지 않는 API

Oauth : 3-legged

user

Client (consumer)

Server (service provider)

2-legged 에 사용불가

Client Server

Page 43: 기획자를 위한 OAuth

Oauth가 적절하지 않은 경우

2. 상업적인 수준의 보안을 요구할때 1억원을 이체할때 집을 계약할 때

Page 44: 기획자를 위한 OAuth

Inspired by “OAuth:The Big Picture” -apigee http://youtu.be/M42ouAgPCQI