6. 2006년 11월
어느날..
저것 만으로는 우리 API 제어에
적합하지 않은데..
나, 트위터..
우리는 인증 (Authentication)뿐만 아니라
API 사용 권한 부여(Authorization) 할 수 있는
방법도 필요해!
Oauth =
Authentication
+
Authorization
9. An open protocol to allow secure authorization
in a simple and standard method
from web, mobile and desktop applications.
- oauth.net
HOW?!
“인증 토큰”
• 서비스에 패스워드 전달없이 인증
• 필요한 기능만 부여 할 수 있음
• 언제나 다시 권한 취소 가능
• 패스워드 변경시에도 유효
16. consumer
어떤앱
①
Consumer가
Service Provider에 등록한다
트위터
②
user User가
service provider
Service Provider에 로그인한다
17. 조금 더 자세히..
consumer
어떤앱
①
Consumer가
Service Provider에 등록하고
Consumer key를 받아서 저장
트위터
②
user User가
service provider
Service Provider에 로그인하고
인증토큰(Access Token)을
Consumer에 저장한다
31. 나 개발자..
이걸 어느 세월에 다 구현하나요?
왠만한 언어용으로
라이브러리 제공!
32. Oauth 시나리오 1
이런..
트위터 로그인 해놓은 내 핸드폰 분실했네!
트위터/페이스북 설정에서
해당 앱의 접근 권한 취소 (revoke)
(트위터 비밀번호를 바꿀 필요 없음)
33. Oauth 시나리오 2
트위터 비밀번호 노출되었어요!
비밀번호 변경하면, 모든 앱들 다시 인증?
비밀번호 바꿔도 API사용 서비스(consumer)에
저장된 인증토큰은 그대로 유효
서비스 사용 지장 없음
34. Oauth 시나리오 3
트위터 로그인을 해놓은 Path 가 해킹당해서
모든 토큰이 해커에게 노출 되었다면?
트위터가 Path를 인증 거부한다.
Path에 저장된 모든 트위터 토큰 인증 거부됨
35. 아임인 핫스팟에서 바로 아임인 저장하기
(consumer)
아임리얼맛집
모바일 앱 사용 Oauth를 통한
API접근
유저
(service provider)
아임인
36. 푸딩카메라에서 바로 푸딩투 저장하기
(consumer)
푸딩카메라
Oauth를 통한
모바일 앱 사용 API접근
유저 현재는 푸딩 카메라에서 (service provider)
푸딩투
푸딩투 앱을 호출 방식
37. 결국은 다 같은 OAuth
1.트위터 앱이 트위터 Oauth 사용
2.어떤 앱이 컨텐츠를 트위터로 내보내기 위해
Oauth 사용
3.자신의 서비스를 트위터 아이디로 가입하게 open
38. Oauth 의 버젼들
보안 문제가 있는 버전.
1.0 절대로 사용하면 안됨
(아마 spec을 찾을 수도 없겠지만..)
안정적이고 사용해도 됨
1.0a Http상에서도 동작하도록 복잡한 암호화를 함
Https가 아닌 환경에서도 동작하나.. 복잡하다
IEFT에 의해서 계속 표준화 진행중
3가지 인증방법 제공
2.0 - bearer token 방식은 안정적이며 구현이 간단. SSL 필요
- 다른 2가지는 계속 수정 중 (MAC token, SAML)
39. Oauth는 API 확산을 위해 필수
API 서비스 프로바이더는
모바일과 웹앱을 위해 Oauth 제공
1.0a 2.0
(대표적인)
OAuth
서비스
프로바이더
40. 어떤 Oauth 버전을 사용해야 하나요?
Oauth 2.0의 bearer token
방식을 쓰세요
(Facebook 도 쓴답니다)
Yes
API가 https를
사용하나요?
No
Oauth 1.0a를 쓰세요
(Twitter 방식)
42. Oauth가 적절하지 않은 경우
1.사람이 개입되지 않는 서비스
서버-서버 간 통신
유저가 개입되지 않는 API
Oauth : 3-legged 2-legged 에 사용불가
Client Server
user Server
(service provider)
Client
(consumer)
43. Oauth가 적절하지 않은 경우
2. 상업적인 수준의 보안을 요구할때
1억원을 이체할때
집을 계약할 때