[Security] OAuth 2.0

[Security] OAuth 2.0

“해당 포스팅은 우아한Tech[10분 테코톡] 토닉, 후디의 인증과 인가 - 부족사회부터 소셜로그인까지을 참고하여 포스팅하였습니다. 영상을 제작해주신 우아한Tech토닉, 후디님에게 감사드립니다.”

#목차

OAuth 2.0

OAuth 2.0 이란?

“다른 웹사이트 상의 자신들의 정보에 대해 접근 권한을 부여할 수 있는 공통적인 수단이자 개방형 표준

소셜 로그인의 등장

social_login_buttons

“구글, 페이스북, 깃헙 등의 로그인을 사용하는 인증 및 인가 절차OAuth와 OpenID라 한다.”

우리는 어떻게 소셜 로그인을 사용한 로그인을 할 수 있을까?

what_is_oauth_openid

OAuth인가에 대한 기술이고, OpenID인증에 대한 기술이다.”

  • 여기서 근간 기술인 OAuthOpenID 두 가지 기술이 존재 한다.

OAuth2.0 이전

service

발단

  • 디스이즈우닷컴은 서비스를 제공하기 위해서 사용자의 구글 주소록이 필요해서 사용자의 ID/PW를 직접 제공받기로 한다.

problem

전개

  1. 사용자가 디스이즈우닷컴에 구글 ID/PW를 제공해 주면
  2. 그 정보로 디스이즈우닷컴에 구글에 로그인하게 된다
  3. 구글은 디스이즈우닷컴에게 사용자의 주소록을 제공해 준다
  4. 디스이즈우닷컴은 사용자에게 서비스를 제공해 준다

문제 발생

  • 하지만, 여기에는 굉장히 많은 문제점이 발생하게 된다
  • 사용자
    1. 디스이즈우닷컴이 해킹돼서 내 계정이 탈취되면?
    2. 에초에 디스이즈우닷컴이 악의적인 웹사이트 면?
  • 디스이즈우닷컴
    1. 사용자의 민감한 개인 정보를 가지고 있어도 되나?
  • 구글
    1. 회원 정보를 믿을 수 없는 제3자에게 가지고 되나?

it_company_oauth

OAuth의 표준화

  • 따라서, OAuth표준화시작된다 explan_oauth

OAuth의 버전

oauth_version

“해당 포스트에서는 OAth2.0 기준으로 포스팅 하겠다”

OAuth의 주체

name

OAuth의 detail 주체

detail_name

OAuth의 동작과정

oauth_diagram

“OAuth2.0의 동작과정을 간단한 시퀀스 다이어그램”
Scope 클라이언트에게 허용된 리소스 접근 범위

  1. Resource OwnerClient에게 로그인 요청하게 된다
  2. ClientAuthorization ServerOAuth 인증 요청하게 되는데, 이때 Scope도 같이 요청하게 된다
  3. Authorization ServerResource Owner에게 로그인 페이지 제공
  4. Resource Owner는 해당 페이지에서 로그인하게 된다
  5. Authorization ServerResource Owner에게 Authorization Code라는 임시 코드를 발급해 준다
  6. 그 즉시 Resource OwnerRedirect URI로 리디렉션 되는데, 이때 Authorization Code를 함께 가지고 리디렉션 된다.
  7. Client는 방금 받은 Authorization Code를 통해 Access Token발급 요청하게 된다
  8. Authorization ServerAccess Token발급해 준다
    • Client는 해당 Access Token을 자체 서비스에 저장 및 관리한다
  9. ClientResource Owner에게 로그인 성공을 알려준다
  10. 시간이 흐르고 Resource OwnerClient에게 서비스 요청
  11. 이때 ClientAccess Server저장된 Access Token으로 리소스 요청
  12. Access Server에서 Access Token검증되면 Client에게 리소스 제공
  13. 그리고 ClientResource Owner에게 서비스 제공

Continue with [Security] OpenID