기획자를 위한 oauth

Post on 07-Nov-2014

12.950 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

박민우PD

기술전략팀

2012/07/18

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

2

수많은 패스워드

수많은 서비스들..

Password

PW

비번 패스워드!

4

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

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

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

스마트한 김모씨

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

OpenID authentication(인증)

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

2006년 11월 어느날..

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

Oauth = Authentication + Authorization

나, 트위터..

OAuth란?

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

3초

service provider

consumer

트위터 API

어떤앱

사랑의 (API) 트라이앵글

user

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

“인증 토큰”

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

- oauth.net

HOW?!

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

인증 토큰? 토큰?

인증 토큰 (Access Token)

토큰 (Token)

토큰 (Token)

토큰 (Token)..

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

OAuth

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

트렁크는 열 수 없음

발렛파킹!

인증 토큰

나, 벤츠..

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

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

저장하라고?

API 사용자

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

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

하는건가?!

API 서비스 제공자

How does it work?

service provider

consumer

트위터

어떤앱

user

① Consumer가 Service Provider에 등록한다

② User가 Service Provider에 로그인한다

service provider

consumer

트위터

어떤앱

user

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

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

조금 더 자세히..

Consumer key =

API key 라고 불리기도.. .

참고로..

Consumer가 Service provider에 등록하기

Consumer가 Service provider에 등록완료

service provider

consumer

트위터

어떤앱

user

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

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

USER 로그인

③ 트위터 로그인

④ Consumer에 인증토큰 전달

service provider

consumer

트위터

어떤앱

user

트위터로 발도장 공유!

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

앱 사용시

Oauth 프로세스

사용자의 관점

트위터 주소창으로 이동

부여할 권한정보

권한을 요청하는 앱 정보

로긴 안되있음

로그인 창

현재 로긴된 트위터 사용자

로그인 되어있는 경우

권한 취소

https://twitter.com/settings/applications

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

나 개발자..

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

Oauth 시나리오 1

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

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

Oauth 시나리오 2

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

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

Oauth 시나리오 3

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

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

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

(service provider) 아임인

(consumer) 아임리얼맛집

유저

Oauth를 통한 API접근

모바일 앱 사용

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

(service provider) 푸딩투

(consumer) 푸딩카메라

유저

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

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

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

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

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

결국은 다 같은 OAuth

Oauth 의 버젼들

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

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

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

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

1.0a 2.0

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

API가 https를 사용하나요?

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

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

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

Yes

No

Oauth 는 만병통치약인가?

Oauth가 적절하지 않은 경우

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

Oauth : 3-legged

user

Client (consumer)

Server (service provider)

2-legged 에 사용불가

Client Server

Oauth가 적절하지 않은 경우

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

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

top related