OAuth 란 ?
Open Authorization의 약어 이다. Open Authorization == OAuth
인가 (Authorization) 를 위한 개방형 표준 프로토콜 이다.
인가를 위한 표준 프로토콜 이지만, OAuth 는 인증 (Authentication) 을 위해서 사용 되기도 한다.
그냥 쉽게 생각하면,
인증을 잘 통과 하고, 인가 단계 에서, Access 권한을 얻기 위한 권한 부여 산업 표준 프로토콜 이라고 보면 된다.
이때, 인증을 보통 사용자가 직접 아이디 / 비밀번호를 입력 해서 로그인을 하게 되는데,
최근에는 SNS 소셜 로그인을 통해서 간편 로그인을 할 수 있는 서비스가 많아 지고 있다.
사실상 거의 모든 사이트에 간편 로그인 서비스가 지원 된다고 봐도 된다.
예를들어 카카오톡 SNS 소셜 로그인을 통해, 사용자가 어떤 특정한 사이트를 이용 할 때,
별도로 회원가입을 하지 않더라도,
카카오톡 플랫폼에 회원 가입이 정상적으로 되어 있다면, 서비스를 바로 이용 할 수 있다.
그런데 이게 어떻게 가능한걸까 ? OAuth 로 가능한 것 이다.
[ 인증 및 인가 정리 링크 ]
https://hwanii96.tistory.com/503
인가 (Authorization) 는
인증 (Authentication) 을 통과한 사용자가
특정 자원 (데이터) 또는 서비스에 접근 할 수 있는 권한을 부여 받는 과정 이라고 했다.
[ 사용 예시 ]
1. SSO (Single Sign-On)
OAuth 는 표준 프로토콜 이기 때문에 SSO에 사용 된다.
FaceBook, Kakao, Google, .. 등과 같은 다양한 소셜 미디어 계정으로 로그인을 할 때 OAuth 표준 프로토콜이 사용 된다.
2. API Access (API 엑세스)
타사 개발자가 서비스에 액세스 할 수 있도록 API (Application Programming Interface == 응용 프로그램 인터페이스)
를 제공 하는 경우, OAuth 를 이용 해서 해당 API 에 대한 엑세스를 인가 받은 후 사용 할 수 있다.
예)
스케줄을 관리 하는 어플리케이션을 개발 한다 가정 할 때, 구글 에서는 구글 캘린더를 가져다가 사용 할 수 있다.
이때, 이 구글 캘린더 API 를 사용 하기 위한 인가 토큰을 OAuth를 통해 발급 받을 수 있다.
[ OAuth 가 생겨 나게 된 배경 ]
인터넷이 발달 하고, 사이트가 증가 했다. 이에 따라 로그인을 해야 하는 상황이 계속 해서 늘어 나게 되었다.
개인정보를 여러번 다양한 곳에 입력을 해야 하는 불편함이 생겨났다.
여러 곳에 개인정보를 입력 하면 보안에 취약해지는 단점이 생기게 되었다.
초창기에는 인증 및 인가 (권한) 을 부여 하기 위한 국제 프로토콜 인증 방식이 존재 하지 않았다.
그래서 Twitter 가 OAuth 1.0 을 주도 해서 탄생 시키게 되었다.
[ OAuth 의 장점 ]
1) 클릭 한 번으로 간편 하게 로그인이 가능 하다.
2) 아이디와 비밀번호를 직접 입력 하지 않고, 타 사의 정보를 연동 해서 인증을 하는 방식이므로,
사용자가 아이디와 비밀번호를 직접 입력 하던 예전의 방식보다 보안성이 올라 가게 되었다.
3) OAuth는 단순하게 회원 정보만 인증 할 수 있는게 아니라, 여러 다양한 API 정보에 대해서도 접근이 가능 하다.
[ OAuth 1.0 이란 ? ]
구성 요소는 아래와 같다.
사용자 (User) : 서비스 제공자 및 소비자를 사용 하기 위한 계정을 가지고 있는 개인.
소비자 (Consumer) : Open API 로 개발된 OAuth를 사용 해서, 서비스 제공자에게 접근 하는 어플리케이션.
서비스 제공자 (Service Provider) : OAuth 를 통해 접근 하는 것을 지원 해주는 어플리케이션.
소비자 비밀번호 (Consumer Secret) : 서비스 제공자에게 내가 소비자 인것을 인증 하기 위한 키.
요청 토큰 (Request Token) : 소비자가 사용자에게 접근 권한을 인증 받기 위해 필요한 정보가 담겨져 있는 토큰.
접근 토큰 (Access Token) : 인증 후 사용자가 서비스 제공자가 아닌 소비자를 통해서 자원 접근을 할 수 있도록 하는
키를 갖고 있는 토큰.
OAuth 1.0 의 인증 프로세스는 아래와 같다.
인증 프로세스 상세
소비자 (Consumer) 등록 과정 :
1. ebook 시스템 에서 SERVICE PROVIDER 에 있는 자원을 사용 하기 위해 등록 요청을 보낸다.
2. SERVICE PROVIDER 에서는 USER 를 CONSUMER 로 등록 해주기 위해서,
Consumer Key 와 Consumer Secret 을 발급 한다.
유저 서비스 (USER Service) 과정 :
1. USER 가 ebook 사이트를 이용 하기 위해 접속 한다.
2. ebook 사이트 에서는 각 OAuth 사이트 (SERVICE PROVIDER) 들 에게 request_token 을 발급 요청 한다.
3. SERVICE PROVIDER 측 에서는, consumer_key를 이용 해서 CONSUMER 을 확인 한다.
확인이 되면 request_token 을 발급 하고 r_secret 을 발급 한다.
4. CONSUMER 는 USER 을 302 Redirect 시키고, SERVICE PROVIDER 의 Login Page 로 이동 시킨다.
5. USER 는 SERVICE PROVIDER 에 로그인 정보를 입력 하고, SERVICE PROVIDER 로 부터 오는
ebook 서비스를 이용 하겠냐 라는 동의 창을 확인 할 수 있다.
6. USER 가 동의 하면, SERVICE PROVIDER 는 USER 를 ebook 창으로 302 Redirect 시킨다.
그리고, oauth_token 과 oauth_verifier 을 발급 받는다.
7. USER 가 302 Redirect 되고, CONSUMER 측에서도 요청이 확인 되면, SERVICE PROVIDER 에게
access_token 을 요청 하고, USER 의 정보도 요청 해서 받는다.
8. USER 정보를 확인한 CONSUMER 은 USER 에게 ebook 페이지를 이용 할 수 있도록 해준다.
[ OAuth 2.0 이란 ? ]
OAuth 1.0 >> OAuth 2.0 으로 업그레이드 !
달라진 점은 아래와 같다.
1) 기능의 단순화. 기능과 규모의 확장성 등을 지원 하기 위해 만들어졌다.
2) HTTPS 를 통해 암호화를 해서 과정의 단순화를 거쳤다.
3) 다양한 인증 방식이 제공 된다.
4) API 서버에서 Authentication Server 와 Resource Server 가 분리 되었다.
구성 요소는 아래와 같다.
Resource Owner : 사용자
Client : Resource Server 에서 제공 하는 자원을 사용 하는 어플리케이션
Resource Server (API Server) : 자원을 호스팅 하는 서버
Authorization Server : 사용자의 동의를 받아 권한을 부여 하는 서버.
일반적으로는 Resource Server 와 같이 URL 하위에 있는 경우가 많다.
OAuth 2.0 의 인증 프로세스는 아래와 같다.
[ OAuth 1.0 VS OAuth 2.0 ]
결론
OAuth 1.0 과 OAuth 2.0 은 둘 다 보안을 강화 하기 위한 프로토콜 이다.
하지만, 두 프로토콜은 다른 방식으로 작동 한다.
OAuth 2.0 은 더욱 간단하고 범용적인 프로토콜 이다.
모바일 기기와 같은 다양한 플랫폼에서 사용 가능 하다.
하지만, 어플리케이션의 보안을 유지 하는데는 필요한 추가 작업이 필요 하긴 하다.
[ References ]
직접 구현해 보자. oAuth1.0 (joinc.co.kr)
OAuth 2.0 개념과 동작원리 (hudi.blog)
MDS인텔리전스 블로그 : 네이버 블로그 (naver.com)
'개념 > Study' 카테고리의 다른 글
SAML (Security Assertion Markup Language) (0) | 2023.11.20 |
---|---|
OIDC (OpenID Connect) (0) | 2023.11.20 |
SSO (Single Sign-On) TYPE (2) | 2023.11.17 |
VMware과 Cloud의 공통점 및 차이점 정리 (0) | 2023.11.17 |
웹 서버 (Web Server) 와 WAS (Web Application Server) 의 차이 (1) | 2023.11.17 |