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

기획자를 위한 OAuth

Embed Size (px)

DESCRIPTION

KTH 화성에서온 개발자, 금성에서온 기획자 시리즈기획자를 위한 쉬운 OAuth 소개

Citation preview

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