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 |