OAuth: Difference between revisions

From IT Wiki
No edit summary
No edit summary
Line 1: Line 1:
[[분류:보안]]
[[분류:보안]]
;제3의 신뢰 서비스에서 인증 결과를 토큰 기반으로 공유받아 활용하는 개방형 표준 프로토콜
;제3의 신뢰 서비스에서 인증 결과를 토큰 기반으로 공유받아 활용하는 개방형 표준 프로토콜
== 프토토콜 종류 ==
{| class="wikitable"
! 종류
! 설명
|-
| 권한 부여 코드 승인
(Authorization Code Grant Type)
|
* 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용
* 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식
|-
| 암시적 승인
(Implicit Grant Type)
|
* 권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식
|-
| 리소스 소유자 암호 자격 증명
(Resource Owner Password Credentials Grant Type)
|
* 클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식
|-
| 클라이언트 자격 증명
(Client Credentials Grant Type)
|
* 클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식
|}


== 인증 절차 ==
== 인증 절차 ==
* OAuth2.0의 프토코톨은 3가지 종류가 있음
* 권한 부여 코드 승인
** Implicit Grant
[[파일:Authorization Code Grant Type.png]]
** Resource Owner Password Credentials Grant
 
** Client Credentials Grant Type
* 암시적 승인
* 아래는 이해가 쉬운 Resource Owner Password Credentials Grant 방식의 인증 절차
[[파일:Implicit Grant Type.png]]
 
* 리소스 소유자 암호 자격 증명
[[파일:Resource Owner Password Credentials Grant.png]]
[[파일:Resource Owner Password Credentials Grant.png]]
* 클라이언트 자격 증명
[[파일:Client Credentials Grant Type.png]]


== 구성 ==
== 구성 ==
Line 40: Line 72:
| 재발급 토큰
| 재발급 토큰
| 권한 서버에 접근 토큰을 요청할 수 있는 토큰
| 권한 서버에 접근 토큰을 요청할 수 있는 토큰
| 접근 토큰 유효기간 만료 시 사용
|}
== OAuth1.0과 OAuth2.0의 차이 ==
{| class="wikitable"
! 비교
! [[OAuth1.0]]
! [[OAuth2.0]]
|-
| 참여자 구분
|
* 이용자
* 소비자
* 서비스 제공자
|
*자원 소유자
* 클라이언트
* 권한 서버
* 자원 서버
|-
| 토큰
|
* 요청 토큰(Request Token)
* 접근 토큰(Access Token)
| 접근 토큰(Access Token)
재발급 토큰(Refresh Token)
|-
| 유효기간
|
* 접근 토큰의 유효기간 없음
|  
|  
* 접근 토큰 유효기간 부여
* 만료 시 재발급 토큰 이용
|-
| 클라이언트
| 웹 서비스
| 웹, 앱 등
|}
|}



Revision as of 00:06, 17 October 2019

제3의 신뢰 서비스에서 인증 결과를 토큰 기반으로 공유받아 활용하는 개방형 표준 프로토콜

프토토콜 종류

종류 설명
권한 부여 코드 승인

(Authorization Code Grant Type)

  • 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용
  • 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식
암시적 승인

(Implicit Grant Type)

  • 권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식
리소스 소유자 암호 자격 증명

(Resource Owner Password Credentials Grant Type)

  • 클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식
클라이언트 자격 증명

(Client Credentials Grant Type)

  • 클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식

인증 절차

  • 권한 부여 코드 승인

Authorization Code Grant Type.png

  • 암시적 승인

Implicit Grant Type.png

  • 리소스 소유자 암호 자격 증명

Resource Owner Password Credentials Grant.png

  • 클라이언트 자격 증명

Client Credentials Grant Type.png

구성

구분 설명 비고
자원 소유자 요청하고자 하는 자원의 소유자이자, 인증 주체 이용자
클라이언트 자원을 필요로 하는 서비스

자원 소유자의 권한으로 권한 서버에서 인증을 받아 자원 서버에 자원 요청

쇼핑몰 등
권한 서버 인증을 처리하고 권한을 부여하는 서버 페이스북

네이버 구글 등

자원 서버 자원을 가지고 있는 서버
접근 토큰 자원 서버에 자원을 요청할 수 있는 토큰 유효기간 존재
재발급 토큰 권한 서버에 접근 토큰을 요청할 수 있는 토큰 접근 토큰 유효기간 만료 시 사용

OAuth1.0과 OAuth2.0의 차이

비교 OAuth1.0 OAuth2.0
참여자 구분
  • 이용자
  • 소비자
  • 서비스 제공자
  • 자원 소유자
  • 클라이언트
  • 권한 서버
  • 자원 서버
토큰
  • 요청 토큰(Request Token)
  • 접근 토큰(Access Token)
접근 토큰(Access Token)

재발급 토큰(Refresh Token)

유효기간
  • 접근 토큰의 유효기간 없음
  • 접근 토큰 유효기간 부여
  • 만료 시 재발급 토큰 이용
클라이언트 웹 서비스 웹, 앱 등

문제점

  • 신뢰된 서비스(권한 서버, 자원 서버)에 개인의 행태 정보가 지나치게 축적되는 문제
    • 국가 기관이 아닌 신뢰된 서비스가 과연 신뢰할 수 있는가?