OAuth: Difference between revisions
From CS 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) | |||
| | |||
* 클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식 | |||
|} | |||
== 인증 절차 == | == 인증 절차 == | ||
* | * 권한 부여 코드 승인 | ||
[[파일:Authorization Code Grant Type.png]] | |||
* | |||
* 암시적 승인 | |||
* | [[파일: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 10:06, 16 October 2019
- 제3의 신뢰 서비스에서 인증 결과를 토큰 기반으로 공유받아 활용하는 개방형 표준 프로토콜
프토토콜 종류
종류 | 설명 |
---|---|
권한 부여 코드 승인
(Authorization Code Grant Type) |
|
암시적 승인
(Implicit Grant Type) |
|
리소스 소유자 암호 자격 증명
(Resource Owner Password Credentials Grant Type) |
|
클라이언트 자격 증명
(Client Credentials Grant Type) |
|
인증 절차
- 권한 부여 코드 승인
- 암시적 승인
- 리소스 소유자 암호 자격 증명
- 클라이언트 자격 증명
구성
구분 | 설명 | 비고 |
---|---|---|
자원 소유자 | 요청하고자 하는 자원의 소유자이자, 인증 주체 | 이용자 |
클라이언트 | 자원을 필요로 하는 서비스
자원 소유자의 권한으로 권한 서버에서 인증을 받아 자원 서버에 자원 요청 |
쇼핑몰 등 |
권한 서버 | 인증을 처리하고 권한을 부여하는 서버 | 페이스북
네이버 구글 등 |
자원 서버 | 자원을 가지고 있는 서버 | |
접근 토큰 | 자원 서버에 자원을 요청할 수 있는 토큰 | 유효기간 존재 |
재발급 토큰 | 권한 서버에 접근 토큰을 요청할 수 있는 토큰 | 접근 토큰 유효기간 만료 시 사용 |
OAuth1.0과 OAuth2.0의 차이
비교 | OAuth1.0 | OAuth2.0 |
---|---|---|
참여자 구분 |
|
|
토큰 |
|
접근 토큰(Access Token)
재발급 토큰(Refresh Token) |
유효기간 |
|
|
클라이언트 | 웹 서비스 | 웹, 앱 등 |
문제점
- 신뢰된 서비스(권한 서버, 자원 서버)에 개인의 행태 정보가 지나치게 축적되는 문제
- 국가 기관이 아닌 신뢰된 서비스가 과연 신뢰할 수 있는가?