study/TIL🐥

OAuth2란?

서나쓰 2021. 4. 26. 14:02
728x90

OAuth를 사용하는 이유

  • 보안의 수준을 알 수 없는 애플리케이션에서 일일히 계정을 만들어 사용하면 ID/PW 관리가 어렵고 개인정보가 유출되면 연쇄적으로 피해가 심각하기에, 보안 수준이 어느정도 검증된 사이트(ex, google, facebook)의 API를 이용해서 인증을 받는 방법이 보안상 좋기 때문이다.

OAuth2 동장 방식

  • OAuth 인증 방식은 인증의 과정을 '타 서비스에게 위임'하는 인증방식.
  • 예를 들어 내 사이트에 구글 로그인 인증을 넣었다고 해서 사용자가 구글 웹사이트에 직접 로그인하는 것이 아니라, 사용자의 정보는 내 사이트에서 관리하고, 구글 로그인 기능을 통해 구글에게 전송한 구글 계정 정보가 유효한지 확인한 후, 유효하다면 해당하는 구글 유저 정보 중 일부를 내 사이트에 제공해 주는 '인증' 과정만 처리한다.

OAuth2 용어 정리

  • Resource owner(자원 소유자)
    → Resource server(구글, 페이스북, 카카오 등)의 계정을 소유하고 있는 사용자
  • Client
    → 구글, 페이스북, 카카오 등의 API 서비스를 이용하는 제 3의 서비스
  • Authorization Server(권한 서버)
    → 권한을 관리해주는 서버, Access Token, Refresh Token등을 발급, 재발급해주는 역할
  • Resource Server
    → OAuth2 서비스를 제공하고, 자원을 관리하는 서버
  • Access Token
    → Authorization Server로부터 발급받은 인증 토큰, Resource Server에 전달하여 서비스 제공받을 수있다

OAtuth2 인증 과정

  • 페이코 참조

OAuth2 프로세스

→ PAYCO 인증서비스 = Authorization Server / PAYCO API 서비스 = Resource Server

15 단계는 Authorization Code 발급 요청 URL을 통해 진행할 수 있습니다.
7
8 단계는 서비스에서 callback URL 을 통해 전달받은 Authorization Code를 사용하여 Access Token 요청 API를 통해 진행할 수 있습니다.
8 단계에서 발급받은 Access Token은 서비스에서 자체적으로 저장, 관리해야 합니다.
10~11 사용자의 서비스 요청 시 회원정보가 필요하다면 Access Token을 사용해 API를 호출할 수 있습니다.

 → 기본적인 구조 및 프로세스
  1. 사용자가 내가 만든 웹 사이트에서 어떤 웹페이지에 접근하려고 요청
  2. 내 사이트에서는 인증되지 않은 사용자의 요청을 받으면 "구글에게 인증 받고 올래?" 하고 동의를 구하는 페이지 띄움
  3. 사용자가 동의를 누르면 구글로 인증 요청이 간다
  4. 구글에서는 로그인이 안되어있으면 로그인을 할 수 있는 화면을 보여주고, 로그인이 되어있으면 "내가 만든 웹사이트에서 너의 구글 계정에 있는 정보를 가져다 쓴다는데 동의할거야?" 라고 구글이 동의를 구하는 화면 보여준다
  5. 사용자가 동의하면 구글은 바로 정보를 주지 않고 인증 코드(code)를 나의 웹 사이트에게 준다
  6. 인증 코드(code)를 받은 웹 사이트는 기존에 웹 서비스를 구글에 등록하면서 받은 client ID, client secret, 받은 인증 코드 code를 구글에게 보낸다. (총 3개의 정보)
  7. 구글이 올바른 클라이언트 요청이었음을 검증했기 때문에 access token을 준다
  8. → 이 access token을 받아야 웹 사이트에서 사용자의 정보에 접근할 수 있다
  9. 이제 사용자의 요청에 따라 구글 계정의 정보가 필요하다면 access token으로 정보를 받아 쓸 수 있다
728x90