[h3 2012] oauth2 - api 인증을위한 만능 도구상자

66
OAuth 2.0 API인증을 위한 만능 도구상자 기술전략팀 | 박민우 | @tebica

Upload: kth-

Post on 07-Nov-2014

2.967 views

Category:

Documents


7 download

DESCRIPTION

H3 2012 발표자료 OAuth2 - API 인증을위한 만능 도구상자 -KTH 박민우

TRANSCRIPT

Page 1: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0API인증을 위한 만능 도구상자

기술전략팀 | 박민우 | @tebica

Page 2: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

2

모바일 / 클라우드 / 정보인권C / PHP / JavascriptPython

박 민 우

Page 3: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

3

@tebicahttp://earlybird.kr

기술전략팀 저비용 고효율 개발자 행사 에반젤리

스트

Page 4: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

지난 번에는..“조금 더 쉬웠으면 좋겠다.”“무슨소린지 그닥 이해안됨.”

“이미 아는 수준이었어요”

Page 5: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자
Page 6: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자
Page 7: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

7

1. 오어쓰가 누구야?

2. OAuth 써봤어요!

3. OAuth 1.0은 알아요~ OAuth 2.0을 알고싶어요!

4. 난~ 알아요!

Page 8: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

8

Page 9: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

9

이번 발표 비율

Too Easy

0% 25% 50% 75% 100%

15%50%35%

OAuth 1.0 OAuth 2.0 Other

Page 10: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

10

Page 11: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

2012년 10월 12일

RFC 6749 RFC 6750Fixed!

Page 12: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

12

책 쓸때만 하더라도... Draft 31 였어요...

Page 13: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

13

Today’s Menu Why OAuth ? What is OAuth 1.0 What is OAuth 2.0 OAuth FAQs

Page 14: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

Why OAuth ?

?

Page 15: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

15

Web 의 시대Mobile 의 시대

Why OAuth?

Platform 의 시대

Page 16: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

16

Why OAuth?

Mobile 의 시대핸드폰은 쉽게 잃어 버리는데 비밀번호를 모두 바꿔야 하나?

너무 많은 서비스! 비밀번호 관리는 어떡하지

Page 17: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

17

Why OAuth?

Platform 의 시대API를 통한 서비스로 다른 서비스와 연동도 해야지!

페이스북/트위터의 아이디 로다른 서비스 가입없이 사용하고 싶어!(안전하게!)

Page 18: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

Why OAuth?

이제는 -1. 비밀번호를 신뢰못하는 앱에 저장하기 싫다.2. 원하는 권한만 주고 싶다3. 원할 때 권한을 회수하고 싶다. 4. 페이스북/트위터 아이디로 다른서비스에 로그인 하고싶다.

18

기존의 ID / Password 인증으론부족해 !

Page 19: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

19

Why OAuth?

OAuth.. 해보셨죠?1. 아임인에서 트위터 비밀번호 저장 없이 트윗하기2. Facebook 로그인

3초..

Page 20: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

20

세상은 왜!OAuth를 좋아하는가!

Page 21: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

Why OAuth?

21

RESTWE API

Page 22: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

What is OAuth 1.0

Page 23: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

23

2006년 11월어느날..

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

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

OAuth 1.0

Authentication+Authorization

=

Page 24: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

24

사랑의 트라이앵글

OAuth 1.0

3-legged

user Client

(consumer)

Server(service provider)

Page 25: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

25

3-legged 의 장점

OAuth 1.0

1. 개발자 인증/관리

API 호출 건수를 제한하겠어요!

Page 26: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

26

3-legged 의 장점

OAuth 1.0

2. 비밀번호를전달 하지 않아도 됨

비밀번호는 에게비밀번호는

에게

Page 27: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

27

HOW?OAuth 1.0

“인증 토큰” (Access Token)

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

Page 28: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

28

OAuth 1.0

“인증 토큰” (Access Token)

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

Page 29: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

29

OAuth 1.0

발렛파킹해주세요!

1km만 주행가능트렁크는 열 수 없음터보모드 사용 불가

Page 30: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

30

지 름 신

위시 리스트 저장 트위터에 자동 공유

Page 31: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

31

지 름 신

나도 트위터연동을

해보겠어 !

Page 32: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

32

지름신

Page 33: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

33

지름신

Page 34: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

34

..

.

개발 끝!

SDK

Page 35: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 1.0

service provider

consumer

user

①트위터로그인 요청

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

③ 트위터 로그인

(사용자가) 처음 트위터 연동하기

④ 인증토큰 전달

지 름 신

Page 36: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

36

지름신by 다만들어damandla.krwishlist app for web

지름신by 다만어damandla.krwishlist app for web

접근할 앱 정보요청하는 권한

트위터로 포워딩 됨

지 름 신

Page 37: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 1.0

service provider

consumer

user

①위시 리스트저장!

② 트위터에 내보내기

트위터에 내보내기

지 름 신 인증토큰

Page 38: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

38

다만들어의 지름신wishlist app for web

Page 39: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

39

OAuth 1.0은 불편해요..3-legged only 2-legged

Signature 생성HMAC-SHA1 (include_entities=true&oauth_consumer_key=xvz1evFS4wEEPTGEFPHBog&oauth_nonce=kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1318622958&oauth_token=370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb&oauth_version=1.0&status=Hello

%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request%21 )

user Client

(consumer)

Server(service provider)

OAuth 1.0

Page 40: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

What is OAuth 2.0

Page 41: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

41

OAuth 2.0

1.0 No보안 문제가 있는 버전.절대로 사용하면 안됨

1.0a(RFC 5849)

OK안정적이고 사용해도 됨

자체 암호화 기능(HTTPS 불필요)

2.0(RFC 6749 RFC 6750)

Good기본 스펙 표준화 완료추가 스펙 표준화 진행 중

OAuth versions

Page 42: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

42

OAuth 2.0

OAuth 1.0 Protocol

OAuth 2.0 Authorization Framework

호환 안됨 / 용어부터 완전 다름

Page 43: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

43

Page 44: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

44

OAuth 2.0

용어1.0 2.0

사용자 User Resource Owner

클라이언트 Consumer Client

API서버Service Provider

Resource Server

인증서버Service Provider

Authorization Server

Page 45: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

45

OAuth 2.0

1.0a 2.0

유명한 서비스 들의 OAuth 버젼

Page 46: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

46

OAuth 2.0

바뀐점HTTP 헤더 :OAuth -> Bearer파라메터 이름:oauth_token -> access_token

주요 서비스의 OAuth 2.0 구현 버전

Page 47: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

OAuth 2.0의 장점

확장성 : API서버와 인증서버의 분리간단해 짐 : signature -> HTTPS다양한 시나리오 : 다양한 토큰 지원 다양한 grant type 지원

47

Page 48: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

48

확장성 (API 서버와 인증서버의 분리 )

...sync 이슈! ...역할 분리!

인증서버분리

Page 49: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

간단 해졌어요

49

HMAC-SHA1

Page 50: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

50

OAuth 2.0

Client types(기준: client 인증서를 안전하게 보관할 수 있는가)

Confidential Client Public Client

client 인증서 보관

안전하게 client 인증서를보관할 수 있는 기기

ex) 서버 등

client 인증서 없음

resource owner가소유한 기기

ex) 핸드폰, JS기반 app 등

Page 51: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

다양한 인증 방식 (Grant type)

51

3-legged 2-legged

PublicClient Implicit Grant Password Credentials

Grant

ConfidentialClient

Authorization Code Grant

Client CredentialsGrant

Page 52: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

2-legged 의 사용 예

52

스마트 TV no-browserdevice

서버에서 접근

Page 53: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

extension 가능!

53

extensionGrant type

Page 54: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

54

OAuth 2.0

다양한 토큰 방식Bearer token (표준)

MAC tokenJSON-web tokenSAML2

GET /wishlist/expensive Authorization: Bearer xx...

GET /wishlist/expensive?access_token=xx..

Page 55: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

55

OAuth 2.0

Access token 유효기간모든 access token은 유효기간을 지님기간이 만료되면 refresh token으로 연장번거롭고 귀찮은 일..

Page 56: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

OAuth libraries

1. 연동하기각 서비스의 SDK

2.SDK가 없는 서비스 연동하기OAuth library http://oauth.net/code/

3.OAuth 서비스 제공하기OAuth library http://oauth.net/code/

56

Page 57: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

OAuth는 위험하다!?

“OAuth 2.0 스펙에서내 이름을 빼달라”

- Eran Hammer

57

Page 58: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

그가 제시한 이유

1.토큰 암호화 안함

2.refresh 하는 과정에서의 token 관리 문제

3.너무 많은 권한 부여방식모든 방식이 OAuth 2.0이다?

58

Page 59: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

그에 대한 반론

1.토큰 암호화 안함HTTPS 는 충분히 안전

2.refresh 하는 과정에서의 token 관리 문제여러가지 대안 존재

3.너무 많은 권한 부여방식안전한 grant type사용 / extension사용 제한

59

Page 60: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth 2.0

OAuth 2.0은 안전하다

1.표준 spec을 사용하세요

2.HTTPS는 기본입니다

3.De facto 표준 (Google & FB)

60

Page 61: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

OAuth FAQs

Page 62: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

62

저는 HTTPS 를 지원할 수 없어요어떻게 하지요?

OAuth 1.0a 를 사용하세요!자체 암호화 기능이 있답니다

Page 63: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

63

은행 계좌이체를 구현하고 있어요OAuth 로 인증해도 될까요?

아니오-OAuth 는 은행업무/집계약 등에

적합하지 않아요!

Page 64: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

64

OAuth 2.0에서 일부를 고쳐서새로운 스펙을 만들고 싶어요!

제발 스톱!-다양한 라이브러리의 혜택 /생태계의 지원이 불가능해요 !

Page 65: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

65

저는 그저 작은 API서비스일 뿐인데OAuth 프로바이더가 되려면

페이스북처럼 큰 서비스만 하는건가요?

API를 제공한다면누구나 OAuth 프로바이더가

될 수 있어요!

Page 66: [H3 2012] OAuth2 - API 인증을위한 만능 도구상자

감사합니다.개발실 / 기술전략팀 / 박민우[email protected]

@tebica

66