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

  • 8,754 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,754
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
159
Comments
5
Likes
46

Embeds 0

No embeds

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