oauth2 - api 인증을 위한 만능도구상자

Post on 07-Nov-2014

8.180 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

H3 2012에서 발표한 자료입니다.

TRANSCRIPT

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

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

2

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

박 민 우

3

@tebicahttp://earlybird.kr

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

스트

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

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

7

1. 오어쓰가 누구야?

2. OAuth 써봤어요!

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

4. 난~ 알아요!

8

9

이번 발표 비율

Too Easy

0% 25% 50% 75% 100%

15%50%35%

OAuth 1.0 OAuth 2.0 Other

10

2012년 10월 12일

RFC 6749 RFC 6750Fixed!

12

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

13

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

Why OAuth ?

?

15

Web 의 시대Mobile 의 시대

Why OAuth?

Platform 의 시대

16

Why OAuth?

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

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

17

Why OAuth?

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

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

Why OAuth?

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

18

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

19

Why OAuth?

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

3초..

20

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

Why OAuth?

21

RESTWE API

What is OAuth 1.0

23

2006년 11월어느날..

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

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

OAuth 1.0

Authentication+Authorization

=

24

사랑의 트라이앵글

OAuth 1.0

3-legged

user Client

(consumer)

Server(service provider)

25

3-legged 의 장점

OAuth 1.0

1. 개발자 인증/관리

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

26

3-legged 의 장점

OAuth 1.0

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

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

에게

27

HOW?OAuth 1.0

“인증 토큰” (Access Token)

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

28

OAuth 1.0

“인증 토큰” (Access Token)

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

29

OAuth 1.0

발렛파킹해주세요!

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

30

지 름 신

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

31

지 름 신

나도 트위터연동을

해보겠어 !

32

지름신

33

지름신

34

..

.

개발 끝!

SDK

OAuth 1.0

service provider

consumer

user

①트위터로그인 요청

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

③ 트위터 로그인

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

④ 인증토큰 전달

지 름 신

36

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

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

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

트위터로 포워딩 됨

지 름 신

OAuth 1.0

service provider

consumer

user

①위시 리스트저장!

② 트위터에 내보내기

트위터에 내보내기

지 름 신 인증토큰

38

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

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

What is OAuth 2.0

41

OAuth 2.0

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

1.0a(RFC 5849)

OK안정적이고 사용해도 됨

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

2.0(RFC 6749 RFC 6750)

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

OAuth versions

42

OAuth 2.0

OAuth 1.0 Protocol

OAuth 2.0 Authorization Framework

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

43

44

OAuth 2.0

용어1.0 2.0

사용자 User Resource Owner

클라이언트 Consumer Client

API서버Service Provider

Resource Server

인증서버Service Provider

Authorization Server

45

OAuth 2.0

1.0a 2.0

유명한 서비스 들의 OAuth 버젼

46

OAuth 2.0

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

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

OAuth 2.0

OAuth 2.0의 장점

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

47

OAuth 2.0

48

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

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

인증서버분리

OAuth 2.0

간단 해졌어요

49

HMAC-SHA1

50

OAuth 2.0

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

Confidential Client Public Client

client 인증서 보관

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

ex) 서버 등

client 인증서 없음

resource owner가소유한 기기

ex) 핸드폰, JS기반 app 등

OAuth 2.0

다양한 인증 방식 (Grant type)

51

3-legged 2-legged

PublicClient Implicit Grant Password Credentials

Grant

ConfidentialClient

Authorization Code Grant

Client CredentialsGrant

OAuth 2.0

2-legged 의 사용 예

52

스마트 TV no-browserdevice

서버에서 접근

OAuth 2.0

extension 가능!

53

extensionGrant type

54

OAuth 2.0

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

MAC tokenJSON-web tokenSAML2

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

GET /wishlist/expensive?access_token=xx..

55

OAuth 2.0

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

OAuth 2.0

OAuth libraries

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

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

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

56

OAuth 2.0

OAuth는 위험하다!?

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

- Eran Hammer

57

OAuth 2.0

그가 제시한 이유

1.토큰 암호화 안함

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

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

58

OAuth 2.0

그에 대한 반론

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

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

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

59

OAuth 2.0

OAuth 2.0은 안전하다

1.표준 spec을 사용하세요

2.HTTPS는 기본입니다

3.De facto 표준 (Google & FB)

60

OAuth FAQs

62

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

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

63

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

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

적합하지 않아요!

64

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

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

65

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

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

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

될 수 있어요!

감사합니다.개발실 / 기술전략팀 / 박민우tebica@kthcorp.com

@tebica

66

top related