SlideShare a Scribd company logo
1 of 66
Download to read offline
OAuth 2.0
API인증을 위한 만능 도구상자

기술전략팀 | 박민우 | @tebica
모바일 / 클라우드 / 정보인권
박민우   C / PHP / Javascript
      Python
                             2
@tebica
http://earlybird.kr
      기술전략팀
                        젤리스트
     저비용 고효율 개발자 행사   에반




                               3
지난 번에는..
“조금 더 쉬웠으면 좋겠다.”   “이미 아는 수준이었어요”
“무슨소린지 그닥 이해안됨.”
1. 오어쓰가 누구야?

2. OAuth 써봤어요!

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

4. 난~ 알아요!
                       7
8
이번 발표 비율




            OAuth 1.0   OAuth 2.0         Other

Easy          35%             50%         15%



       0%         25%   50%         75%       100%

                                                     9
10
2012년 10월 12일




   ed! RFC 6749
Fix    RFC 6750
책 쓸때만 하더라도...
  Draft 31 였어요...




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

                     13
?
Why OAuth ?
Why OAuth?




  Web 의 시대
 Mobile 의 시대
Platform 의 시대

                       15
Why OAuth?



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

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

                              16
Why OAuth?



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

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



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

기존의 ID / Password 인증으론
부족해 !
                                18
Why OAuth?

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




                3초..
                                    19
세상은 왜!
OAuth를 좋아하는가!




            20
Why OAuth?


     REST
WE    API




                    21
What is OAuth 1.0
OAuth 1.0


                        저것
 만으로는
2006년 11월               우리
 API
 제어에
                       적합하지
 않은데..
어느날..


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

                Authentication
            =   +
                Authorization                                                                          23
OAuth 1.0



사랑의 트라이앵글          3-legged




            user                   Server
                    Client      (service provider)
                   (consumer)



                                               24
OAuth 1.0


3-legged 의 장점
1. 개발자 인증/관리




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


                                  25
OAuth 1.0


3-legged 의 장점
2. 비밀번호를
전달 하지 않아도 됨


                비밀번호는
                   에게
                비밀번호는
                   에게
                             26
OAuth 1.0


      HOW?
      “인증 토큰”
       (Access Token)

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



                                  27
OAuth 1.0



  “인증 토큰”
   (Access Token)

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



발렛파킹
해주세요!




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

                         29
위시 리스트 저장
      트위터에 자동 공유
지름신




                   30
지름신

나도 트위터
 연동을
해보겠어 !
         31
지름신




      32
지름신




      33
개발   끝!
    SDK




.
.
.
                    34
OAuth 1.0


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


    ①
    트위터      지름신          ② 사용자를
    로그인 요청                 트위터 로그인 화면으로..

                ④ 인증토큰
                     전달



                                   service
             ③ 트위터
 user          로그인
                                   provider
트위터로 포워딩 됨

 지름신

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


                            접근할 앱 정보
    요청하는 권한
               지름신
               by 다만어
               damandla.kr
               wishlist app for web




                                       36
OAuth 1.0


트위터에 내보내기
             consumer



    ①         지름신                    인증
    위시 리스트              ② 트위터에       토큰
    저장!                  내보내기




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




                       38
OAuth 1.0


         OAuth 1.0은 불편해요..
   3-legged only                                                                     2-legged



                                    Server
    user
                   Client (service provider)
                (consumer)




Signature 생성
HMAC-SHA1
(include_entities=trueoauth_consumer_key=xvz1evFS4wEEPTGEFPHBogoauth_nonce=kYjzV
BB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cgoauth_signature_method=HMAC-
SHA1oauth_timestamp=1318622958oauth_token=370773112-
GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEboauth_version=1.0status=Hello
%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request%21          )                          39
What is OAuth 2.0
OAuth 2.0

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

                     OK
     1.0a        안정적이고 사용해도 됨
  (RFC 5849)       자체 암호화 기능
                  (HTTPS 불필요)

     2.0            Good
   (RFC 6749      기본 스펙 표준화 완료
   RFC 6750)     추가 스펙 표준화 진행 중        41
OAuth 2.0




               OAuth 2.0
 OAuth 1.0
             Authorization
 Protocol
              Framework


호환 안됨 / 용어부터 완전 다름
                                  42
43
OAuth 2.0

용어
             1.0                  2.0
사용자           User          Resource Owner

클라이언트     Consumer                Client

API서버                       Resource Server
        Service Provider
인증서버                       Authorization Server

                                                44
OAuth 2.0

유명한 서비스 들의 OAuth 버젼
    1.0a       2.0




                                 45
OAuth 2.0

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




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



OAuth 2.0의 장점

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


                                  47
OAuth 2.0

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


                                 인증서버
                                 분리




    sync 이슈!   .
               .   역할 분리!       .
                                .
               .                .       48
OAuth 2.0

간단 해졌어요

   HMAC-SHA1




                           49
OAuth 2.0

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

   Confidential
                      Public Client
     Client

 client 인증서 보관      client 인증서 없음

 안전하게 client 인증서를     resource owner가
  보관할 수 있는 기기             소유한 기기
    ex) 서버 등        ex) 핸드폰, JS기반 app 등

                                             50
OAuth 2.0


다양한 인증 방식 (Grant type)
                3-legged          2-legged

  Public                      Password Credentials
               Implicit Grant
  Client                            Grant



Confidential   Authorization   Client Credentials
  Client        Code Grant           Grant

                                                    51
OAuth 2.0



 2-legged 의 사용 예



         no-browser   서버에서 접근
스마트 TV   device


                                    52
OAuth 2.0


extension 가능!

                extension
                Grant type




                                  53
OAuth 2.0


다양한 토큰 방식
  Bearer token (표준)
  GET /wishlist/expensive
  Authorization: Bearer xx...
  GET /wishlist/expensive?access_token=xx..


  MAC token
  JSON-web token
  SAML2
                                            54
OAuth 2.0



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




                                  55
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
저는 HTTPS 를 지원할 수 없어요
               어떻게 하지요?




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

                                 62

More Related Content

Viewers also liked

AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)Amazon Web Services Korea
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중Amazon Web Services Korea
 
[GDG DevFest Korea 2013] OSCON 발표기
[GDG DevFest Korea 2013] OSCON 발표기[GDG DevFest Korea 2013] OSCON 발표기
[GDG DevFest Korea 2013] OSCON 발표기Minwoo Park
 
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!Minwoo Park
 
PyCon Korea 2017 opening
PyCon Korea 2017 openingPyCon Korea 2017 opening
PyCon Korea 2017 openingMinwoo Park
 
Opensource realm soscon
Opensource realm sosconOpensource realm soscon
Opensource realm sosconMinwoo Park
 
PyCon KR 2017 orientation
PyCon KR 2017 orientationPyCon KR 2017 orientation
PyCon KR 2017 orientationMinwoo Park
 
모바일 광고 개론
모바일 광고 개론모바일 광고 개론
모바일 광고 개론Minwoo Park
 
An overview of open source in east asia
An overview of open source in east asiaAn overview of open source in east asia
An overview of open source in east asiaMinwoo Park
 
개발자와 영어 Why and how
개발자와 영어 Why and how개발자와 영어 Why and how
개발자와 영어 Why and howMinwoo Park
 
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해Minwoo Park
 

Viewers also liked (13)

AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
 
AWSKRUG - AWS 한국 사용자 모임 소개(2017)
AWSKRUG - AWS 한국 사용자 모임 소개(2017)AWSKRUG - AWS 한국 사용자 모임 소개(2017)
AWSKRUG - AWS 한국 사용자 모임 소개(2017)
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
 
[GDG DevFest Korea 2013] OSCON 발표기
[GDG DevFest Korea 2013] OSCON 발표기[GDG DevFest Korea 2013] OSCON 발표기
[GDG DevFest Korea 2013] OSCON 발표기
 
learn-python
learn-pythonlearn-python
learn-python
 
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
 
PyCon Korea 2017 opening
PyCon Korea 2017 openingPyCon Korea 2017 opening
PyCon Korea 2017 opening
 
Opensource realm soscon
Opensource realm sosconOpensource realm soscon
Opensource realm soscon
 
PyCon KR 2017 orientation
PyCon KR 2017 orientationPyCon KR 2017 orientation
PyCon KR 2017 orientation
 
모바일 광고 개론
모바일 광고 개론모바일 광고 개론
모바일 광고 개론
 
An overview of open source in east asia
An overview of open source in east asiaAn overview of open source in east asia
An overview of open source in east asia
 
개발자와 영어 Why and how
개발자와 영어 Why and how개발자와 영어 Why and how
개발자와 영어 Why and how
 
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
 

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

KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718KTH, 케이티하이텔
 
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Platform
 
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XpressEngine
 
Week7. sso and oauth
Week7. sso and oauthWeek7. sso and oauth
Week7. sso and oauthHansolJang5
 
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Platform
 
Using google api in go
Using google api in goUsing google api in go
Using google api in goJongmin Kim
 
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016Amazon Web Services Korea
 
100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ONOpennaru, inc.
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference ArchitectureSeong-Bok Lee
 
[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결
[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결
[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결NAVER D2
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기GunHee Lee
 
AManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformAManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformByungjin Park
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처Yoonjeong Kwon
 
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스 GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스 MooYeol Lee
 
Web2.0 기술 동향 및 web 보안 취약성 분석
Web2.0 기술 동향 및 web 보안 취약성 분석Web2.0 기술 동향 및 web 보안 취약성 분석
Web2.0 기술 동향 및 web 보안 취약성 분석nam kwangjin
 
[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료
[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료
[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료Bitberry
 

Similar to OAuth2 - API 인증을 위한 만능도구상자 (20)

KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718
KTH_Detail day_화성에서 온 개발자 금성에서 온 기획자 시리즈_7차(2)_Oauth_박민우_20120718
 
Auth
AuthAuth
Auth
 
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
Clova Tech Summit 2: 코오롱베니트의 Clova Extension 계정연동 및 IoT 개발경험
 
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
 
RED HAT SINGLE SIGN-ON
RED HAT SINGLE SIGN-ONRED HAT SINGLE SIGN-ON
RED HAT SINGLE SIGN-ON
 
Week7. sso and oauth
Week7. sso and oauthWeek7. sso and oauth
Week7. sso and oauth
 
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
Clova Tech Summit 세션3 :Clova extension에서 OAuth 계정 연동 구현
 
Using google api in go
Using google api in goUsing google api in go
Using google api in go
 
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
 
100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON100.RED HAT SINGLE SIGN-ON
100.RED HAT SINGLE SIGN-ON
 
API Management Reference Architecture
API Management Reference ArchitectureAPI Management Reference Architecture
API Management Reference Architecture
 
[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결
[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결
[132] 서비스 오리엔티드 블록체인을 위한 스케일링 문제 해결
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
리로그인 Relogin: 코드스테이츠 데모데이
리로그인 Relogin: 코드스테이츠 데모데이리로그인 Relogin: 코드스테이츠 데모데이
리로그인 Relogin: 코드스테이츠 데모데이
 
AManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformAManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with Terraform
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처
 
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스 GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
GDG Incheon Devfest 2016 - Google API로 만드는 더욱 더 풍부한 백오피스
 
Web2.0 기술 동향 및 web 보안 취약성 분석
Web2.0 기술 동향 및 web 보안 취약성 분석Web2.0 기술 동향 및 web 보안 취약성 분석
Web2.0 기술 동향 및 web 보안 취약성 분석
 
[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료
[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료
[비트베리파트너스데이] 비트베리 비즈니스 솔루션 소개 자료
 

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

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

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  14. 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  15. 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  16. 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  17. 난 알아요 부분에서 노래가 나오도록\n난 알아요! -> 문은 저쪽에 2개가 준비되어 있습니다.\n저는 중간에 나간다고 상처 받지 않아요-\n\n
  18. \n
  19. \n
  20. 시계보다 더 나은 이미지 없을까?\n
  21. 시계보다 더 나은 이미지 없을까?\n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. 개발자에게 이메일로 공지!\n
  45. 이제 토큰 발생 개수 제한 (3-legged 라서)\n-> 개발자 인증!\n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. 개발자는 트위터 개발자 페이지에서 등록해서 컨슈머 키를 받습니다.\n\n
  59. key/pass 부분을 위에 크게 확대!\n
  60. \n
  61. \n
  62. 지름신 앱 define을 웹앱으로 재설정\n\n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. umbrella term\nRFC 1.0은 당연히 OAuth 1.0a\n
  69. http://tools.ietf.org/wg/oauth/\n
  70. \n
  71. 호환안됨\n\n\n
  72. 옛날 라이브러리 괜찮아~!\n
  73. \n
  74. \n
  75. 여러 rest client\n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. 이 내용은 간결하게 정리\n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. 인증토큰 방식은 어울리지 않음\n
  91. 인증토큰 방식은 어울리지 않음\n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n