기획자를 위한 oauth
Post on 07-Nov-2014
12.950 Views
Preview:
DESCRIPTION
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