Backend/Java & Spring

JWT와 OAuth의 차이점 정리

khu2172 2025. 7. 29. 00:54

1. JWT (JSON Web Token)

  • JWT는 토큰의 한 종류로, 인증 및 권한 부여 정보를 담는 데 사용된다.
  • 토큰 자체에 명확한 정보(사용자 ID, 권한, 만료 시간 등)가 들어 있다.
  • 별도의 저장소에 토큰의 상태를 저장하지 않고 토큰만으로 정보를 검증한다.
  • 구성: Header.Payload.Signature 형식으로 구성되며 Base64Url로 인코딩된 정보를 담는다.

특징

  • 자체 완결성(Self-contained): 토큰만으로도 사용자의 인증 및 권한 정보를 확인할 수 있다.
  • 상태 비저장(Stateless): 서버가 상태 정보를 저장할 필요가 없어 확장성이 뛰어나다.


2. OAuth (Open Authorization)

  • OAuth는 토큰이 아니라, 토큰을 얻기 위한인증 및 권한 부여 절차를 정의한 프레임워크이다.
  • 애플리케이션이 사용자를 대신하여 보호된 리소스에 접근할 수 있도록 권한을 위임하는 표준 프로토콜이다.
  • OAuth 프레임워크를 통해 발급된 OAuth Bearer Token랜덤한 문자열로 구성되어 있다.
  • 토큰 자체에는 사용자의 민감한 정보가 직접 포함되지 않고, 토큰을 통해 리소스 서버에서 정보를 조회한다.

특징

  • 권한 위임: 사용자의 자격 증명(비밀번호)을 공유하지 않고도 애플리케이션이 제한된 권한으로 사용자의 데이터에 접근할 수 있다.
  • 다양한 시나리오 지원: 권한 부여 유형(Authorization Code, Implicit, Password, Client Credentials 등)을 통해 다양한 사용 사례를 지원한다.

 

비교표

  JWT OAuth
종류 토큰(token) 프레임워크(framework)
정보 포함 명확한 정보 포함 랜덤한 문자열 (정보 미포함)
상태 관리 상태 비저장(Stateless) 토큰 상태 관리 가능
목적 인증 및 권한 정보 전달 애플리케이션의 권한 위임
사용 예시 로그인 세션 관리, API 접근 SNS 연동 로그인, 써드파티 앱 접근
 

결론

  • JWT는 명확한 사용자 정보를 담아 인증과 권한 관리를 위한 토큰 형식이다.
  • OAuth는 외부 애플리케이션에 권한을 위임하는 프로세스를 표준화한 프레임워크로, OAuth가 발급하는 토큰 자체는 정보를 담지 않은 랜덤 값이다.

이러한 특성을 잘 이해하면 보다 안전하고 효율적인 인증 및 인가 시스템을 설계할 수 있다.

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

CORS란? (Cross-Origin Resource Sharing)  (2) 2025.08.07
JWT(Json Web Token)란?  (0) 2025.07.05
DI와 객체지향 관점  (1) 2025.06.26
객체 지향  (0) 2025.06.22
AOP를 활용했던 경험  (0) 2025.06.13