OAuth2 - API 인증을 위한 만능도구상자
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

OAuth2 - API 인증을 위한 만능도구상자

  • 8,602 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
8,602
On Slideshare
8,590
From Embeds
12
Number of Embeds
4

Actions

Shares
Downloads
148
Comments
5
Likes
32

Embeds 12

http://dev.geekple.com 6
https://twitter.com 3
http://www.linkedin.com 2
http://oer-test.xinics.kr 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  • 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  • 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  • 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  • 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  • \n
  • \n
  • 시계보다 더 나은 이미지 없을까?\n
  • 시계보다 더 나은 이미지 없을까?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 개발자에게 이메일로 공지!\n
  • 이제 토큰 발생 개수 제한 (3-legged 라서)\n-> 개발자 인증!\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 개발자는 트위터 개발자 페이지에서 등록해서 컨슈머 키를 받습니다.\n\n
  • key/pass 부분을 위에 크게 확대!\n
  • \n
  • \n
  • 지름신 앱 define을 웹앱으로 재설정\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • umbrella term\nRFC 1.0은 당연히 OAuth 1.0a\n
  • http://tools.ietf.org/wg/oauth/\n
  • \n
  • 호환안됨\n\n\n
  • 옛날 라이브러리 괜찮아~!\n
  • \n
  • \n
  • 여러 rest client\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 이 내용은 간결하게 정리\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 인증토큰 방식은 어울리지 않음\n
  • 인증토큰 방식은 어울리지 않음\n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. OAuth 2.0API인증을 위한 만능 도구상자기술전략팀 | 박민우 | @tebica
  • 2. 모바일 / 클라우드 / 정보인권박민우 C / PHP / Javascript Python 2
  • 3. @tebicahttp://earlybird.kr 기술전략팀 젤리스트 저비용 고효율 개발자 행사 에반 3
  • 4. 지난 번에는..“조금 더 쉬웠으면 좋겠다.” “이미 아는 수준이었어요”“무슨소린지 그닥 이해안됨.”
  • 5. 1. 오어쓰가 누구야?2. OAuth 써봤어요!3. OAuth 1.0은 알아요~ OAuth 2.0을 알고싶어요!4. 난~ 알아요! 7
  • 6. 8
  • 7. 이번 발표 비율 OAuth 1.0 OAuth 2.0 OtherEasy 35% 50% 15% 0% 25% 50% 75% 100% 9
  • 8. 10
  • 9. 2012년 10월 12일 ed! RFC 6749Fix RFC 6750
  • 10. 책 쓸때만 하더라도... Draft 31 였어요... 12
  • 11. Today’s Menu Why OAuth ? What is OAuth 1.0 What is OAuth 2.0 OAuth FAQs 13
  • 12. ?Why OAuth ?
  • 13. Why OAuth? Web 의 시대 Mobile 의 시대Platform 의 시대 15
  • 14. Why OAuth?Mobile 의 시대 핸드폰은 쉽게 잃어 버리는데 비밀번호를 모두 바꿔야 하나? 너무 많은 서비스! 비밀번호 관리는 어떡하지 16
  • 15. Why OAuth?Platform 의 시대 API를 통한 서비스로 다른 서비스와 연동도 해야지! 페이스북/트위터의 아이디 로 다른 서비스 가입없이 사용하고 싶어! (안전하게!) 17
  • 16. Why OAuth?이제는 -1. 비밀번호를 신뢰못하는 앱에 저장하기 싫다.2. 원하는 권한만 주고 싶다3. 원할 때 권한을 회수하고 싶다.4. 페이스북/트위터 아이디로 다른서비스에 로그인 하고싶다.기존의 ID / Password 인증으론부족해 ! 18
  • 17. Why OAuth?OAuth.. 해보셨죠?1. 아임인에서 트위터 비밀번호 저장 없이 트윗하기2. Facebook 로그인 3초.. 19
  • 18. 세상은 왜!OAuth를 좋아하는가! 20
  • 19. Why OAuth? RESTWE API 21
  • 20. What is OAuth 1.0
  • 21. OAuth 1.0 저것
  • 22.   만으로는2006년 11월 우리
  • 23.   API
  • 24.   제어에 적합하지
  • 25.   않은데..어느날..“우리는 인증 (Authentication)뿐만 아니라API 사용 권한 부여(Authorization)도 할 수 있는방법이 필요해!” Authentication = + Authorization 23
  • 26. OAuth 1.0사랑의 트라이앵글 3-legged user Server Client (service provider) (consumer) 24
  • 27. OAuth 1.03-legged 의 장점1. 개발자 인증/관리 API 호출 건수를 제한하겠어요! 25
  • 28. OAuth 1.03-legged 의 장점2. 비밀번호를전달 하지 않아도 됨 비밀번호는 에게 비밀번호는 에게 26
  • 29. OAuth 1.0 HOW? “인증 토큰” (Access Token)API를 사용하는 서비스(consumer)에비밀번호를 저장하지 않고인증 토큰을 저장,인증토큰(Access Token)으로API 사용 27
  • 30. OAuth 1.0 “인증 토큰” (Access Token)서비스에 패스워드 전달없이 인증필요한 기능만 부여 할 수 있음언제나 다시 권한 취소 가능패스워드 변경시에도 유효 28
  • 31. OAuth 1.0발렛파킹해주세요! 1km만 주행가능 트렁크는 열 수 없음 터보모드 사용 불가 29
  • 32. 위시 리스트 저장 트위터에 자동 공유지름신 30
  • 33. 지름신나도 트위터 연동을해보겠어 ! 31
  • 34. 지름신 32
  • 35. 지름신 33
  • 36. 개발 끝! SDK... 34
  • 37. OAuth 1.0(사용자가) 처음 트위터 연동하기 consumer ① 트위터 지름신 ② 사용자를 로그인 요청 트위터 로그인 화면으로.. ④ 인증토큰 전달 service ③ 트위터 user 로그인 provider
  • 38. 트위터로 포워딩 됨 지름신 지름신 by 다만들어 damandla.kr wishlist app for web 접근할 앱 정보 요청하는 권한 지름신 by 다만어 damandla.kr wishlist app for web 36
  • 39. OAuth 1.0트위터에 내보내기 consumer ① 지름신 인증 위시 리스트 ② 트위터에 토큰 저장! 내보내기 service user provider
  • 40. 다만들어의 지름신wishlist app for web 38
  • 41. OAuth 1.0 OAuth 1.0은 불편해요.. 3-legged only 2-legged Server user Client (service provider) (consumer)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 ) 39
  • 42. What is OAuth 2.0
  • 43. OAuth 2.0OAuth versions No 1.0 보안 문제가 있는 버전. 절대로 사용하면 안됨 OK 1.0a 안정적이고 사용해도 됨 (RFC 5849) 자체 암호화 기능 (HTTPS 불필요) 2.0 Good (RFC 6749 기본 스펙 표준화 완료 RFC 6750) 추가 스펙 표준화 진행 중 41
  • 44. OAuth 2.0 OAuth 2.0 OAuth 1.0 Authorization Protocol Framework호환 안됨 / 용어부터 완전 다름 42
  • 45. 43
  • 46. OAuth 2.0용어 1.0 2.0사용자 User Resource Owner클라이언트 Consumer ClientAPI서버 Resource Server Service Provider인증서버 Authorization Server 44
  • 47. OAuth 2.0유명한 서비스 들의 OAuth 버젼 1.0a 2.0 45
  • 48. OAuth 2.0주요 서비스의 OAuth 2.0 구현 버전바뀐점 HTTP 헤더 : OAuth -> Bearer 파라메터 이름: oauth_token -> access_token 46
  • 49. OAuth 2.0OAuth 2.0의 장점 확장성 : API서버와 인증서버의 분리 간단해 짐 : signature -> HTTPS 다양한 시나리오 : 다양한 토큰 지원 다양한 grant type 지원 47
  • 50. OAuth 2.0확장성 (API 서버와 인증서버의 분리 ) 인증서버 분리 sync 이슈! . . 역할 분리! . . . . 48
  • 51. OAuth 2.0간단 해졌어요 HMAC-SHA1 49
  • 52. OAuth 2.0Client types(기준: client 인증서를 안전하게 보관할 수 있는가) Confidential Public Client Client client 인증서 보관 client 인증서 없음 안전하게 client 인증서를 resource owner가 보관할 수 있는 기기 소유한 기기 ex) 서버 등 ex) 핸드폰, JS기반 app 등 50
  • 53. OAuth 2.0다양한 인증 방식 (Grant type) 3-legged 2-legged Public Password Credentials Implicit Grant Client GrantConfidential Authorization Client Credentials Client Code Grant Grant 51
  • 54. OAuth 2.0 2-legged 의 사용 예 no-browser 서버에서 접근스마트 TV device 52
  • 55. OAuth 2.0extension 가능! extension Grant type 53
  • 56. OAuth 2.0다양한 토큰 방식 Bearer token (표준) GET /wishlist/expensive Authorization: Bearer xx... GET /wishlist/expensive?access_token=xx.. MAC token JSON-web token SAML2 54
  • 57. OAuth 2.0Access token 유효기간 모든 access token은 유효기간을 지님 기간이 만료되면 refresh token으로 연장 번거롭고 귀찮은 일.. 55
  • 58. OAuth 2.0 OAuth libraries1. 연동하기 각 서비스의 SDK2.SDK가 없는 서비스 연동하기 OAuth library http://oauth.net/code/3.OAuth 서비스 제공하기 OAuth library http://oauth.net/code/ 56
  • 59. OAuth 2.0OAuth는 위험하다!? “OAuth 2.0 스펙에서 내 이름을 빼달라” - Eran Hammer 57
  • 60. OAuth 2.0 그가 제시한 이유1.토큰 암호화 안함2.refresh 하는 과정에서의 token 관리 문제3.너무 많은 권한 부여방식 모든 방식이 OAuth 2.0이다? 58
  • 61. OAuth 2.0 그에 대한 반론1.토큰 암호화 안함 HTTPS 는 충분히 안전2.refresh 하는 과정에서의 token 관리 문제 여러가지 대안 존재3.너무 많은 권한 부여방식 안전한 grant type사용 / extension사용 제한 59
  • 62. OAuth 2.0 OAuth 2.0은 안전하다1.표준 spec을 사용하세요2.HTTPS는 기본입니다3.De facto 표준 (Google & FB) 60
  • 63. OAuth FAQs
  • 64. 저는 HTTPS 를 지원할 수 없어요 어떻게 하지요?OAuth 1.0a 를 사용하세요!자체 암호화 기능이 있답니다 62
  • 65. 은행 계좌이체를 구현하고 있어요 OAuth 로 인증해도 될까요? 아니오-OAuth 는 은행업무/집계약 등에 적합하지 않아요! 63
  • 66. OAuth 2.0에서 일부를 고쳐서 새로운 스펙을 만들고 싶어요! 제발 스톱!-다양한 라이브러리의 혜택 /생태계의 지원이 불가능해요 ! 64
  • 67. 저는 그저 작은 API서비스일 뿐인데 OAuth 프로바이더가 되려면 페이스북처럼 큰 서비스만 하는건가요? API를 제공한다면누구나 OAuth 프로바이더가 될 수 있어요! 65
  • 68. 감사합니다.개발실 / 기술전략팀 / 박민우 tebica@kthcorp.com @tebica 66