개발/CS

OAuth2.0

냥덕_ 2025. 1. 21. 15:21

Oauth?

Open Authorization의 약자로 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 위한 개방형 표준이다. 쉽게 말해 사용자가 자신의 비밀번호를 공유하지 않고도 다른 애플리케이션이 특정 작업을 수행하도록 허용하는 인증 방식이다.

주요 용어

Authorization Code 엑세스 토큰을 얻기 위한 중간 단계로 사용되는 코드
Scope 클라이언트가 리소스에 대하여 어떤 작업을 수행할 수 있는지 정의한 문자열
Access Token 리소스 서버로부터 리소스 소유자 정보를 얻을 때 사용하는 token
Refresh Token access token 만료시 갱신을 위한 token


OAuth2.0 구성

Resource owner 사용자를 의미하며 클라이언트를 인증
Client  OAuth 2.0을 사용하여 리소스에 접근하는 어플리케이션이나 서비스
Authorization Server 권한 서버를 의미, 클라이언트가 리소스 소유자의 권한을 얻을 수 있도록 도와주는 서버로써 사용자 인증, 권한 부여 및 토큰 발급 관리
Resource Server 리소스를 호스팅하는 서버, 클라이언트에게 리소스에 액세스할 권한을 부여하고 실제 데이터를 제공

 

OAuth 2.0 권한 부여 방식

Authorization Code Grant (인가 코드 방식)

  • 가장 많이 사용하는 방식
  • 카카오나 구글 등이 운영하는 Authorization Server에서 인가 코드를 발급
  • 해당 코드를 사용해서 클라이언트가 엑세스 토큰을 받고 리소스에 접근하는 방식

Implicit Grant (암시적 승인 방식)

  • 주로 모바일/웹 앱에서 사용
  • 인가 코드 없이 바로 엑세스 토큰을 받아옴
    • 토큰이 바로 노출되므로 보안이 취약

Password Credentials Grant (비밀번호 방식)

  • 사용자가 앱에 직접 아이디와 비밀번호를 입력하여 액세스 토큰을 받는 방식
  • 해당 정보를 바탕으로 클라이언트가 인증 서버로 요청 후 엑세스 토큰을 받고 리소스에 접속

Client Credentails Grant (클라이언트 자격 증명 방식)

  • 사용자가 아닌, 서버 끼리의 인증에서 주로 사용
  • 쇼핑몰 웹사이트가 내부적으로 결제 시스템 서버와 통신할 때 사용돼요. 사용자 개입 없이, 서버 간 데이터를 주고받는 등의 경우
  • 서버 자체가 인증을 받은 후 엑세스 토큰을 받아 해당 토큰으로 데이터를 처리

로그인 전체 과정

네이버 OAuth2.0 문서를 참고해서 보면 전체 과정 이해가 쉽다. 참고로 Authorization Code Grant을 바탕으로 로그인이 이루어진다.

출처 : https://guide.ncloud-docs.com/docs/b2bpls-oauth2