Oauth란 무엇인가

maintain·2020년 7월 21일
0

Oauth&OpenID

목록 보기
1/1
post-custom-banner

Oauth란?

Oauth는 인증을 위한 표준 프로토콜로 한 인터넷 서비스의 기능을 다른 서비스에서도 사용하도록 하는 것입니다. 예를 들어 어떤 쇼핑몰에서 상품을 하나 구매하는데 SNS에 홍보를 해주면 할인을 해준다고 합시다. 사용자가 여기에 동의해서 SNS에 자동으로 홍보글을 작성했습니다. 여기서 SNS에 자동으로 글을 작성한 것이 바로 OAuth를 활용한 것입니다.

Oauth와 OpenID

Oauth와 OpenID 둘은 비슷하지만 목적이 다릅니다. 둘 다 타 서비스에 접근해서 타 서비스의 인증과정을 경유해서 데이터를 이용한다는 점은 같지만 목적이 다릅니다. OpenID는 단순히 사용자를 인증하고 로그인을 대리하는 것이 목적이지만 Oauth는 로그인 후 타 서비스의 API를 활용해서 해당 이용자의 식별 정보 외 다른 데이터들까지 활용하는 것이 목적입니다. Oauth도 인증과정은 똑같이 포함하기 때문에 Oauth를 OpenID처럼 활용할 수 있지만 그 반대는 할 수 없습니다.

Oauth의 인증과정

로그인을 하고 서비스를 사용하려는 사람을 사용자, 타사의 Oauth API를 이용하려는 서비스 제공자를 클라이언트, Oauth를 제공하는 곳을 서버라고 하자.
(아래는 구글 Oauth 인증과정을 간략화 한 것이며, 전체적인 흐름은 같지만 서비스 별로 차이가 있을 수 있다.)

  1. 사용자가 클라이언트 서비스에 접속한다.
  2. 사용자가 로그인을 위해 서버의 Oauth서비스를 선택한다.
  3. 사용자는 서버의 Oauth 페이지로 이동해 인증 과정을 거친다.
  4. 인증 과정이 끝나면 클라이언트가 지정한 URL로 서버에서 파라미터에 인증 코드를 붙여서 리다이렉트 한다.
  5. 리다이렉트된 URL에 붙어 온 파라미터를 읽고 클라이언트는 여기서 온 정보와 클라이언트 id와 비밀번호를 붙여서 서버에 액세스 토큰을 요청한다.
  6. 액세스 토큰을 제대로 받았다면 이 액세스 토큰으로 클라이언트는 사용자의 데이터를 서버에게 요청할 수 있다.
  7. 액세스 토큰은 빠르게 만료되며 6과정에서 같이 받은 만료가 긴 refresh 토큰으로 재발급 받을 수 있습니다.
    Oauth

다음에는 django로 google oauth 인증 페이지를 작성해보도록 하겠습니다.

참조

Naver D2 - Oauth와 춤을
https://d2.naver.com/helloworld/24942
Google ID 플랫폼
https://developers.google.com/identity/protocols/oauth2?hl=ko
생활코딩 - Oauth2.0
https://opentutorials.org/course/3405
Oauth 다이어그램
https://oauth.net/core/diagram.png

post-custom-banner

0개의 댓글