코딩공부/개발지식
JWT와 OAuth: 인증과 권한 부여
표자
2024. 7. 28. 15:23
728x90
반응형
1.JWT (JSON Web Token)란?
JWT는 당사자 간에 정보를 JSON 객체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준입니다.
주요 특징:
- 구조: Header, Payload, Signature 세 부분으로 구성
- 사용 사례: 인증 및 정보 교환
- 장점: 상태를 저장할 필요가 없어 서버 부하 감소
JWT 작동 방식:
- 사용자 로그인
- 서버가 JWT 생성 및 클라이언트에 전송
- 클라이언트가 후속 요청에 JWT 포함
- 서버가 JWT 검증 후 요청 처리
2. OAuth란?
OAuth는 사용자 데이터에 대한 접근 권한을 제3자 애플리케이션에 부여할 수 있게 하는 개방형 표준 프로토콜입니다.
주요 특징
- 버전: OAuth 1.0과 OAuth 2.0 (더 널리 사용됨)
- 목적: 안전한 위임 접근
- 역할: Resource Owner, Client, Authorization Server, Resource Server
OAuth 2.0 승인 흐름
- 클라이언트가 리소스 소유자에게 권한 요청
- 리소스 소유자가 승인 부여
- 클라이언트가 인증 서버에 액세스 토큰 요청
- 인증 서버가 액세스 토큰 발급
- 클라이언트가 액세스 토큰으로 보호된 리소스 접근
3. JWT vs OAuth
- JWT는 토큰 형식이고, OAuth는 권한 부여 프로토콜입니다.
- JWT는 주로 인증에 사용되고, OAuth는 권한 부여에 중점을 둡니다.
- OAuth는 JWT를 토큰 형식으로 사용할 수 있습니다.
보안 고려사항
- JWT: 서명 검증, 만료 시간 설정, 민감한 정보 암호화
- OAuth: HTTPS 사용, 상태 매개변수 검증, 안전한 클라이언트 비밀 관리
구현 팁
- JWT: jsonwebtoken 라이브러리 (Node.js)
- OAuth: Passport.js (Node.js), Spring Security OAuth (Java)
결론
JWT와 OAuth는 현대 웹 애플리케이션의 보안과 사용자 경험을 향상시키는 강력한 도구입니다. 개발자는 이들의 작동 원리와 적절한 사용 사례를 이해하고 있어야 합니다.
728x90
반응형