OAuth 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류:보안]] | [[분류:보안]] | ||
;제3의 신뢰 서비스에서 인증 결과를 토큰 기반으로 공유받아 활용하는 개방형 표준 프로토콜 | |||
== 프토토콜 종류 == | |||
==프토토콜 종류== | |||
{| class="wikitable" | {| class="wikitable" | ||
!종류 | ! 종류 | ||
!설명 | ! 설명 | ||
|- | |- | ||
| | | 권한 부여 코드 승인 | ||
(Authorization Code Grant) | (Authorization Code Grant Type) | ||
| | | | ||
*클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용 | * 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용 | ||
*리스소 접근을 | * 리스소 접근을 위한 사용자 명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 엑세스 토큰을 받는 방식 | ||
|- | |- | ||
| | | 암시적 승인 | ||
(Implicit Grant) | (Implicit Grant Type) | ||
| | | | ||
*권한 부여 코드 승인 타입과 다르게 권한 코드 교환 | * 권한 부여 코드 승인 타입과 다르게 권한 코드 교환 단계 없이 엑세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식 | ||
|- | |- | ||
|리소스 소유자 암호 자격 | | 리소스 소유자 암호 자격 증명 | ||
(Resource Owner Password Credentials Grant) | (Resource Owner Password Credentials Grant Type) | ||
| | | | ||
*클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식 | * 클라이언트가 암호를 사용하여 엑세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식 | ||
|- | |- | ||
|클라이언트 자격 | | 클라이언트 자격 증명 | ||
(Client Credentials Grant) | (Client Credentials Grant Type) | ||
| | | | ||
*클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식 | * 클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식 | ||
|} | |} | ||
==인증 절차== | == 인증 절차 == | ||
===권한 부여 코드 승인=== | === 권한 부여 코드 승인 === | ||
[[파일:Authorization Code Grant Type.png]] | [[파일:Authorization Code Grant Type.png]] | ||
===암시적 승인=== | === 암시적 승인 === | ||
[[파일:Implicit Grant Type.png]] | [[파일:Implicit Grant Type.png]] | ||
===리소스 소유자 암호 자격 증명=== | === 리소스 소유자 암호 자격 증명 === | ||
[[파일:Resource Owner Password Credentials Grant.png]] | [[파일:Resource Owner Password Credentials Grant.png]] | ||
===클라이언트 자격 증명=== | === 클라이언트 자격 증명 === | ||
[[파일:Client Credentials Grant Type.png]] | [[파일:Client Credentials Grant Type.png]] | ||
==구성== | == 구성 == | ||
{| class="wikitable" | {| class="wikitable" | ||
!구분 | ! 구분 | ||
!설명 | ! 설명 | ||
!비고 | ! 비고 | ||
|- | |- | ||
|자원 소유자 | | 자원 소유자 | ||
|요청하고자 하는 자원의 소유자이자, 인증 주체 | | 요청하고자 하는 자원의 소유자이자, 인증 주체 | ||
|이용자 | | 이용자 | ||
|- | |- | ||
|클라이언트 | | 클라이언트 | ||
|자원을 필요로 하는 서비스 | | 자원을 필요로 하는 서비스 | ||
자원 소유자의 권한으로 권한 서버에서 인증을 받아 자원 서버에 자원 요청 | 자원 소유자의 권한으로 권한 서버에서 인증을 받아 자원 서버에 자원 요청 | ||
|쇼핑몰 등 | | 쇼핑몰 등 | ||
|- | |- | ||
|권한 서버 | | 권한 서버 | ||
|인증을 처리하고 권한을 부여하는 서버 | | 인증을 처리하고 권한을 부여하는 서버 | ||
| rowspan="2" |페이스북 | | rowspan="2" | 페이스북 | ||
네이버 | 네이버 | ||
구글 등 | 구글 등 | ||
|- | |- | ||
|자원 서버 | | 자원 서버 | ||
|자원을 가지고 있는 서버 | | 자원을 가지고 있는 서버 | ||
|- | |- | ||
|접근 토큰 | | 접근 토큰 | ||
|자원 서버에 자원을 요청할 수 있는 토큰 | | 자원 서버에 자원을 요청할 수 있는 토큰 | ||
|유효기간 존재 | | 유효기간 존재 | ||
|- | |- | ||
|재발급 토큰 | | 재발급 토큰 | ||
|권한 서버에 접근 토큰을 요청할 수 있는 토큰 | | 권한 서버에 접근 토큰을 요청할 수 있는 토큰 | ||
|접근 토큰 유효기간 만료 시 사용 | | 접근 토큰 유효기간 만료 시 사용 | ||
|} | |} | ||
==OAuth1.0과 OAuth2.0의 차이== | == OAuth1.0과 OAuth2.0의 차이 == | ||
{| class="wikitable" | {| class="wikitable" | ||
!비교 | ! 비교 | ||
![[OAuth1.0]] | ! [[OAuth1.0]] | ||
![[OAuth2.0]] | ! [[OAuth2.0]] | ||
|- | |- | ||
|참여자 구분 | | 참여자 구분 | ||
| | | | ||
*이용자 | * 이용자 | ||
*소비자 | * 소비자 | ||
*서비스 제공자 | * 서비스 제공자 | ||
| | | | ||
*자원 소유자 | *자원 소유자 | ||
*클라이언트 | * 클라이언트 | ||
*권한 서버 | * 권한 서버 | ||
*자원 서버 | * 자원 서버 | ||
|- | |- | ||
|토큰 | | 토큰 | ||
| | | | ||
*요청 토큰(Request Token) | * 요청 토큰(Request Token) | ||
*접근 토큰(Access Token) | * 접근 토큰(Access Token) | ||
| | | | ||
*접근 토큰(Access Token) | * 접근 토큰(Access Token) | ||
*재발급 토큰(Refresh Token) | * 재발급 토큰(Refresh Token) | ||
|- | |- | ||
|유효기간 | | 유효기간 | ||
| | | | ||
*접근 토큰의 유효기간 없음 | * 접근 토큰의 유효기간 없음 | ||
| | | | ||
*접근 토큰 유효기간 부여 | * 접근 토큰 유효기간 부여 | ||
*만료 시 재발급 토큰 이용 | * 만료 시 재발급 토큰 이용 | ||
|- | |- | ||
|클라이언트 | | 클라이언트 | ||
| | | | ||
*웹 서비스 | * 웹 서비스 | ||
| | | | ||
*웹, 앱 등 | * 웹, 앱 등 | ||
|} | |} | ||
==문제점== | == 문제점 == | ||
* 신뢰된 서비스(권한 서버, 자원 서버)에 개인의 행태 정보가 지나치게 축적되는 문제 | |||
* | ** 국가 기관이 아닌 신뢰된 서비스가 과연 신뢰할 수 있는가? | ||
**국가 기관이 아닌 신뢰된 서비스가 과연 신뢰할 수 있는가? | |||