버미

OAuth 2.0 본문

SW Engineering

OAuth 2.0

Bum_2 2025. 7. 26. 16:02

클라이언트에서 신뢰할 수 있는 서비스(네이버, 구글, 카카오 등)를 사용하여 로그인을 진행한다. 이 때, oauth 흐름을 통해 인증처리를 하는데 OAuth란 무엇인지 알아보자.


OAuth

OAuth 또는 Open Authorization은 액세스 위임을 위한 개방형 표준 인가 프로토콜이다. 

즉, 사용자가 클라이언트에 직접 ID와 PW를 제공할 필요 없이, OAuth 제공업체(네이버, 구글, 카카오)가 사용자를 인증해주고 제한된 권한을 제공해주는 구조다.

 

OAuth와 같은 구조가 필요해진 이유

과거에는 애플리케이션에 사용자의 아이디와 비밀번호를 직접 입력받아 인증방식이었다. 이 방식은 보안 문제와 사용자 경험 측면에서 단점이 있었다. 이런 단점 보안을 위해, 인터넷에서 사용자 인증과 권한 부여를 안전하고 효율적으로 처리하는 OAuth를 사용하게 됐다.

 

1. 보안 강화: 사용자가 자신의 ID와 PW를 제3의 앱에 노출하지 않고, 토큰 기반으로 권한을 부여하여 데이터 유출 방지

2. 사용자 편의성: 한 번 로그인하면 여러 서비스에서 별도 인증 없이 접근 가능 (ex. 구글 계정으로 다른 앱 로그인)

3. 권한 관리: 사용자가 어떤 데이터나 기능에 접근을 허용할지 제어 가능

4. 확장성: 개발자가 복잡한 인증 시스템을 직접 만들지 않고, 표준화된 OAuth를 사용하여 빠른 서비스 구축 가능


OAuth 구성 요소

OAuth의 흐름을 알기 전에 어떤 요소들이 등장하는지 살펴보자.

요소 설명
Resource Owner (서비스 사용자) 어플리케이션을 이용하려는 Resource Server의 계정 소유자
Resource Server (리소스 관리 서버) OAuth 2.0 서비스를 제공하고 Resource를 관리하는 서버
Client (서비스) Resource Server(리소스 관리 서버)의 API를 사용하여 정보를 가져오려는 애플리케이션 서버
Authorization Server (인증 서버) Client(서비스)가 Resource Server(리소스 관리 서버)의 서비스를 사용할 수 있도록 인증하고, 제한된 권한(토큰)을 제공하는 서버
AccessToken JWT의 Access Token으로, Resource Server(리소스 관리 서버)에 요청해서 개인정보를 받을 수 있다.
Refresh Token  JWT의 Refresh Token으로, 만료된 Access Token을 재발급 받을 수 있다.

 

 

위의 시퀀스 다이어그램은 이해를 돕기위해 4가지의 Object를 만들었다. 여기서 Client(서비스)는 서비스의 클라이언트와 기본적인 백엔드의 역할을 같이 한다.

 

 

실제 OAuth를 사용하기 위해 필요한 요소 4가지를 알아보자.

 

1. Client ID

  • Client(서비스)를 식별하는 ID를 의미한다.

2. Client Secret

  • Client ID에 대한 비밀번호로 외부에 노출되면 안된다.
  • PW라고 생각하면 된다.

3. Authorized redirect URI

  • Authorization Server(인증 서버)가 Client(서비스)에 권한을 부여하는 과정에서 Authorized code를 전달하는 통로다.
  • Authorization Server는 redirect URI가 사전에 등록된 URI와 일치하는지 확인하여, Authorized code 등을 해당 클라이언트에게만 전달한다. redirect  URI가 일치하지 않으면 해당 요청은 신뢰할 수 없는 client의 요청으로 판단되어 거부된다.

4. Scope

  • 보안 상 사용자의 모든 정보를 알 수 없도록, 구현하려는 서비스 대상에 따라 접근 범위를 설정해야 한다.
    접근 범위는 회원 이름, 이메일 주소, 별명, 프로필 사진, 생일 등이 있다. 
  • Scope는 OAuth 제공 업체의 OAuth를 사용할 때 어떤 범위까지 사용할 것인지 설정해 요청하면, 그에 대한 Client ID, Client Secret, Authorized Redirect URI를 제공해준다.

'SW Engineering' 카테고리의 다른 글

버전 표기 체계 정리  (0) 2024.12.11