OAuth

황상익·2024년 12월 18일

About OAuth

외부 소셜 계정을 기반으로 간편 인증하는 인증 서비스 제공
ex) facebook, kakao 등

Third-party 프로그램이 client를 대신해 리소스 서버에 제공하는 자원에 대한 접근 권한을 위임 받는 형식

OAuth 2.0 주체

1) Resource Owner
리소스 소유자. 외부 소셜 서비스 (API)
즉 해당 플랫폼에서 리소스를 소유하고 있는 사용자를 의미

2) Authorization Server
Authorization Server는 Resource Owner를 인증하고, 개발한 웹 서비스에게 Access Token 발급
외부 플랫폼 리소스에 접근할 수 있는지 인증하는 서버를 의미

3) Resource Server
구글, 페이스북, 카카오 같이 보호되는 리소스 서버

4) Client
Resource Owner를 대신해 Authorization Server & Resource Server에 접근 주체
우리가 개발하는 서비스를 Client라고 정의한 이유는 우리가 서비스를 Authorization Server & Resource Server 입장에서 클라이언트이기 때문이다.

OAuth 2.0 동작 매커니즘

웹 서비스를 Resouce Server에 등록
Redirect URI도 함께 등록해야 하는데, 해당 위치는 사용자가 OAuth 2.0 서비스에서 인증을 마치고 리다이렉션 시킬 위치

웹 서비스 등록을 성공적으로 마치면, Client ID 와 Client Secret 얻을 수 있다.
두 정보는 추후 Access Token을 획득하는데 중요한 역할을 함, 외부로 유출되어서는 안됨


카카오 OpenAPI 로그인

로그인 요청

Resource Owner : 카카오 로그인 하기 버튼을 클릭해 로그인 요청
Client: OAuth 프로세스를 시작하기 위해 Resource Owner 브라우저를 Authorization Server
Client는 이때 Authorization URL에 response_type, client_id, redirect_uri, scope 매개변수를 쿼리 스트링으로 포함

  • response_type : 반드시 Code 설정 & 인증 성공시 Client는 => Authorization Code 발급
  • client_id : 웹 서비스를 Resource Server에 등록했을 때 발급받은 Client ID 의미
  • redirect_uri : 웹 서비스를 Resource Server에 등록했을 때 등록한 redirect URI 의미
  • scope : Client가 부여 받은 리소스 접근 권한 의미

로그인 페이지 제공 및 ID/PW

Client로 부터 Authorization URL로 이동된 Resource Owner는 제공된 로그인 페이지에서 ID/PW을 입력하여 인증

Authorization Code 발급 및 Redirect URI

Authorization server는 기존에 설정한 Redirect URL에 Authorization Code를 포함해 사용자 Redirection
Authorization Code란 리소스 접근을 위한 Access Token을 획득하기 위해 사용하는 임시 코드
단 임시코드는 수명이 매우 짧음

Authorization Code와 Access Token 발급

Client는 다시 Authorization Server에 Authorization Code를 전달하고, Access Token을 발급. Client는 자신이 발급 받은 Resource Owner의 Access Token을 DB에 저장.
Resource Server에서 Resource Owner읠 리소스에 접근 -> Access Token 사용
***) 단 Access Token 유출 X

OAuth 2.0 Scope

로그인 요청시 Scope 정할 수 있음
scope란 client가 사용 가능한 resource 접근 범위 제한
이런 방식으로 발급된 Access Token은 Scope 정보를 갖고 있어 권한을 제한

profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글