Backend/Java & Spring

OAuth란?

khu2172 2025. 5. 26. 23:24

OAuth자신이 소유한 리소스에 제3의 애플리케이션이 접근할 수 있도록 권한을 위임해주는 개방형 표준 프로토콜이다.
사용자가 직접 자격 증명(아이디/비밀번호)을 제공하지 않아도, 특정 서비스가 사용자의 리소스(예: 이메일, 프로필 등)에 접근할 수 있게 한다.


OAuth의 핵심 개념

  • 사용자는 한 번의 인가 과정만으로 다양한 서비스에 안전하게 접근을 허용할 수 있다.
  • 애플리케이션은 사용자의 개인 정보(ID/PW) 없이도, 사용자의 허락 하에 API를 호출할 수 있는 권한을 얻게 된다.
  • 이러한 과정을 통해 보안성과 편의성을 동시에 확보할 수 있다.

OAuth 2.0의 역할

현재 널리 사용되는 버전은 OAuth 2.0이며, 다음과 같은 기능을 제공한다:

  • 다양한 클라이언트 환경(Web, App 등)에 적합한 인증(Authentication)
    인가(Authorization) 방식 제공
  • 그 결과로 Access Token(접근 토큰)을 클라이언트에게 발급
  • 이 토큰을 통해 클라이언트는 API에 접근할 수 있으며, 주로 JWT 형태로 발급된다.

권한 부여 방식(Grant Types)

OAuth 2.0은 상황에 따라 4가지 방식으로 권한을 위임할 수 있다:

  1. Authorization Code (가장 일반적)
    • 주로 웹 애플리케이션모바일 앱에서 사용
    • 인가 코드(Authorization Code)를 먼저 받은 뒤, 이를 통해 Access Token을 발급받는 방식
    • 보안성이 높아 가장 널리 사용됨
  2. Implicit (현재는 권장되지 않음)
    • 주로 브라우저 기반 애플리케이션에서 사용
    • 인가 코드 없이 곧바로 Access Token을 발급받음
    • 클라이언트 보안이 취약한 환경에서 주로 사용되었으나, 현재는 사용 자제 권고
  3. Resource Owner Password Credentials (Password 방식,
    현재는 권장되지 않음)
    • 사용자가 아이디와 비밀번호를 직접 입력해 토큰을 발급받는 방식
    • 보안상의 이유로 자체 서비스에서만 제한적으로 사용
    • 외부 앱에서 사용은 권장되지 않음
  4. Client Credentials
    • 사용자가 아닌, 서버 간 통신 또는 시스템 대 시스템 인증 시 사용
    • 클라이언트 애플리케이션 자체를 인증하여 토큰을 발급받음

OAuth의 동작 흐름 요약

  1. 사용자가 애플리케이션을 통해 인증 요청
  2. 인증 서버는 사용자의 동의 하에 Access Token을 발급
  3. 클라이언트는 이 토큰을 사용하여 API 서버에 요청
  4. API 서버는 토큰의 유효성을 검증한 후, 요청된 리소스를 반환

정리하면

  • OAuth는 권한 위임(Authorization Delegation)을 위한 표준 프로토콜
  • OAuth 2.0은 다양한 인증 시나리오에 적합한 Grant Type을 제공
  • Access Token을 통해 클라이언트는 사용자의 리소스에 안전하게 접근 가능
  • 실제 구현에서는 JWT 토큰 형식으로 Access Token을 주고받는 경우가 많음

OAuth는 인증과 인가를 분리하여 보안성을 높이면서도 사용자 편의성을 제공하는 대표적인 인증 기술임.
SNS 로그인, 외부 API 연동, 마이크로서비스 구조 등 다양한 현대 웹/앱 환경에서 널리 활용되고 있다.

'Backend > Java & Spring' 카테고리의 다른 글

filter와 interceptor의 차이  (0) 2025.06.01
애노테이션(Annotation)이란?  (0) 2025.05.30
제네릭(Generic)이란?  (1) 2025.05.28
인스턴스화란 무엇인가?  (1) 2025.05.27
상속  (0) 2024.12.22