일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Machine Learning
- scope
- 자바스크립트
- 끈기
- 데이터전송
- CSS
- 클로저
- NextJS
- 리눅스
- nodejs
- 스파르타코딩클럽
- ES6
- reactnative
- HTTP
- 1일1문장
- docker
- 개발공부
- 객체
- Andrew Ng
- Linux
- coursera
- javascript
- 러닝자바스크립트
- React
- Sequence
- 자료구조
- Til
- 우선순위
- multer
- 회고
- Today
- Total
해나아부지 개발일지
OAuth 본문
OAuth란
인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
개요
OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조이다.
기본인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다.
OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.
용어
- 사용자(user): 서비스 제공자와 소비자를 사용하는 계정을 가지고 있는 개인
- 소비자(consumer): Open API를 이용하여 개발된 OAuth를 사용하여 서비스 제공자에게 접근하는 웹사이트 또는 애플리케이션
- 서비스 제공자(service provider): OAuth를 통해 접근을 지원하는 웹 애플리케이션(Open API를 제공하는 서비스)
- 소비자 비밀번호(consumer secret) : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키
- 요청 토큰(request token) : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있으며 후에 접근 토큰으로 변환된다.
- 접근 토큰(access token) : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해서 보호된 자원에 접근하기 위한 키를 포함한 값.
Authentication과 Authorization의 차이
OAuth는 인증(Authentication)을 다른 서비스에 맡길 뿐, 접근 권한 관리(Authorization)는 순전히 서버의 몫입니다. 그러므로, OAuth의 작동 방식을 알기 위해서는 기존 인증 방식에 대한 이해가 필수적입니다.
Authentication(인증)
서버에 등록된 사용자인가를 확인하는 과정, 방식 등을 말함
Authorization(인가)
특정 리소스에 대해 접근 권한을 주는 것을 말함
예를 들어 특정 웹페이지에 관리자 계정과 일반 사용자 계정은 각각 접근할 수 있는 요소들이 다르다. 관리자 계정에는 관리 메뉴에 접근할 수 있는 권한을 부여해 일반 사용자들은 접근할 수 없게 만들 수 있다.
인증방식
OAuth 1.0
- 소비자가 서비스제공자에게 요청토큰을 요청한다.
- 서비스제공자가 소비자에게 요청토큰을 발급해준다.
- 소비자가 사용자를 서비스제공자로 이동시킨다. 여기서 사용자 인증이 수행된다.
- 서비스제공자가 사용자를 소비자로 이동시킨다.
- 소비자가 접근토큰을 요청한다.
- 서비스제공자가 접근토큰을 발급한다.
- 발급된 접근토큰을 이용하여 소비자에서 사용자 정보에 접근한다.
OAuth 2.0
- 소비자(인가된 사용자)가 다시 연결된다.
- 소비자는 접근 권한을 얻는다.
- Application으로 재연결된다.
- 접근 권한이 바뀐다.
- 서비스제공자에게 access token을 보낸다.
- 연결이 생성된다.
OAuth 2.0이 도입되고 인증 단계가 많이 간소화되었다.
OAuth 2.0의 특징은 다음과 같다.
- 웹 애플리케이션이 아닌 애플리케이션 지원 강화
- 암호화가 필요 없음 HTTPS를 사용하고 HMAC을 사용하지 않는다.
- Siganature 단순화 정렬과 URL 인코딩이 필요 없다.
- Access Token 갱신 OAuth 1.0에서 Access Token을 받으면 Access Token을 계속 사용할 수 있었다. 트위터의 경우에는 Access Token을 만료시키지 않는다. OAuth 2.0에서는 보안 강화를 위해 Access Token의 Life-time을 지정할 수 있도록 했다.
OAuth의 Flow를 볼 수있는 오라클 사이트 링크