oAuth 2.0 개요

정수현·2021년 6월 26일
0

oAuth

목록 보기
1/1

oAuth는 3자간 인증을 위한 프로토콜이다.

이글은 kakao, google .. 등 제공하는 서비스마다 oAuth는 조금씩 다른 부분이 있지만 표준적인 개요에 대한 글이다.

resource owner : oAuth를 통해 인증하려는 주체를 의미한다 ( kakao, google의 id를 통해 로그인 하려는 유저 )

client : oAuth를 통해 사용자를 자신의 서비스의 인증구조가 아닌 제 3자의 서비스를 통해 인증하려는 주체를 의미한다 ( application-server )

resource server : oAuth를 제공하는 주체 서비스의 데이터서버(resource server) 의미한다.

authorization server : oAuth를 제공하는 주체 서비스의 인증서버(authrization server)를 의미한다.

  1. application server는 authorization server에 본인의 서비스를 등록한 뒤 client_id와 client_secret 값, callback url을 확보하도록 한다.

  2. resource owner는 application server에 login을 요청한다.

  3. owner는 application owner에서 본인의 유저 정보를 제공하는 것을 원하지 않는다 ( 개인 kakao 아이디 비밀번호등 정보가 특정 서비스에게 노출되는 것을 원하지 않는다 ) 따라서 application 서버는 callback url을 통해 3자의 authorization서버에 로그인을 하도록 유도한다. 이 때 url은 다음과 같은 형식을 의미할 수 있다.
    scope는 3자의 서버에서 사용할 수 있는 특정 권한들을 의미한다 ( kakao story 글쓰기 허락 등.. )

https://{Authorization server domain}/ {client_id} & {redirect_url} & {scope}
  1. 3자의 authorization 서버는 owner에 유저 정보를 확인하고 scope에 대한 동의를 요구한다.
    example

4,5 . 3의 과정이 성공적으로 마무리되었다면 authorization server는 아래와 같은 url로 owner를 redirect 시킨다. 이 때 url은 다음과 같은 형식을 의미할 수 있다.

https://{client_domain}/{callback_url}? {code}
  1. client는 access token을 발급받기 위한 일종의 임시 token인 code를 확보할 수 있다.
    client는 authorization server에게 code와 client_id, client_secret, callback_url, grant_type 정보를 가지고 access token을 authorization server에게 요청한다.

  2. access token을 발급받았다면 client는 owner와 이를 통해 3자의 서비스의 유저정보를 통해 본인의 서비스를 이용하도록 할 수 있으며 resource server에 허락된 scope에 한해 access token을 통해 접근이 가능하다.

profile
백앤드 개발자

0개의 댓글

관련 채용 정보