[TIL]201030 OAuth, Social Login

Chaegyeom·2020년 11월 6일
0

TIL

목록 보기
59/77
post-thumbnail

OAuth

OAuth는 인증을 위한 오픈 스탠더드 프로토콜로, 사용자가 Facebook이나 트위터 같은 인터넷 서비스의 기능을 다른 애플리케이션(데스크톱, 웹, 모바일 등)에서도 사용할 수 있게 한 것이다.

현재 나와있는 OAuth 2.0은 OAuth 1.0과 호환되지 않지만, 인증 절차가 간략하다는 장점이 있다.

OAuth 1.0은 웹 애플리케이션이 아닌 애플리케이션에서는 사용하기 곤란하다는 단점이 있다. 또한 절차가 복잡하여 OAuth 구현 라이브러리를 제작하기 어렵고, 이런저런 복잡한 절차 때문에 Service Provider에게도 연산 부담이 발생하는데 OAuth 2.0은 이러한 단점을 개선한 것으로 여러 서비스에서 OAuth 2.0을 사용하고 있다.

OAuth 2.0의 특징

  1. 웹 애플리케이션이 아닌 애플리케이션 지원 강화
  2. 암호화가 필요 없음 HTTPS를 사용하고 HMAC을 사용하지 않는다.
  3. Siganature 단순화 정렬과 URL 인코딩이 필요 없다.
  4. Access Token 갱신 OAuth 1.0에서 Access Token을 받으면 Access Token을 계속 사용할 수 있었다. 트위터의 경우에는 Access Token을 만료시키지 않는다. OAuth 2.0에서는 보안 강화를 위해 Access Token의 Life-time을 지정할 수 있도록 했다.

OAuth는 요즘의 인터넷 생태계의 주요 요소로 자리매김하고 있는데, 신생 업체들은 고유의 인증 방식을 사용하기 보다는 Facebook이나 트위터의 인증을 이용해서 개발 비용과 운영비용을 줄이고 Facebook이나 트위터를 통해 서비스를 홍보하는 효과를 만들 수도 있다. 그리고 Service Provider 입장에서는 핵심 기능을 더욱 공고히 하는 효과를 얻는다.

OAuth 2.0용어

  • Resource Server(리소스 서버): 제어할 수 있는 자원을 가진 서버
  • Resource Owner(리소스 오너): 자원의 소유자
  • client(클라이언트): 리소스 서버에 접속해서 정보를 가져가는 대상

Resource Server

kakao, facebook, naver 회사를 의미한다. client와 Resource Owner가 사용하는 자원(Reource)들을 관리하며 값의 유효성를 확인한다.여기서 자원(Resource)은 유저의 정보 혹은 로그인 서비스를 제어하는 데 필요한 요소이다.즉 우리가 제어하려는 자원(Resource)을 가지고 있는 서버(Server)라는 뜻에서 리소스 서버(Resource Server)라고 한다.

Resource Owner

우리의 서비스를 이용하는 유저(User)를 가리킨다. 로그인 자원(Resource)를 가지고 있는 사람(Owner)으로 해당 서비스를 이용하려는 유저(User)다.

client

우리의 현재 만들고 있는 서비스(service) 혹은 어플리케이션(application)을 가리킨다.

OAuth 2.0 인증 과정


클라이언트가 리소스서버에 등록을 통해 ID와 Secret을 발급받는다.


리소스 오너가 클라이언트에 로그인 요청을 하면 클라이언트는 리소스오너에게 리소스서버의 로그인화면을 띄워준다.


리소스오너는 리소스서버에게 클라이언트가 리소스 서버에 있는 리소스오너의 정보 접근에 대한 권한을 수락한다(동의 안하면 로그인은 못한다!)


리소스 오너가 권한을 수락하면 리소스서버는 클라이언트에게 암호화된 코드를 보내준다. 그럼 클라이언트는 암호화된 코드와 리소스서버에 등록할 때 발급받은 ID와 Secret을 다시 리소스서버측에 보낸다.


등록할 때 발급받은 ID와 Secret그리고 로그인 때 보내준 암호화 된 코드가 모두 일치하면 리소스 서버는 Access Token을 발급하고 클라이언트는 Access Token을 통해 정보에 대한 접근 권한을 얻게 되어 해당 정보를 토대로 리소스오너를 인증하여 클라이언트의 서비스를 이용할 수 있게 된다.

profile
주니어 개발자가 되고싶은

0개의 댓글