웹 애플리케이션 및 서비스에서 보안은 매우 중요한 요소입니다.
사용자 인증과 권한 부여는 이러한 보안을 구축하는 데 있어서 핵심적인 부분인데요.
그 중에서도 JWT(Jason Web Token)와 OAuth는 널리 사용되는 두 가지 웹 보안 프로토콜입니다.
이번 글에서는 JWT와 OAuth의 개념, 구조 그리고 주요 차이점에 대해 자세히 알아보겠습니다!
JWT란?
Jason Web Token으로 클라이언트와 서버 간의 인증을 위한 토큰 기반 방식
JWT의 생김새
- 헤더(Header) : 토큰의 타입과 해싱 알고리즘을 정의
- 내용(payload) : 클레임(Claim) 정보가 포함.
- 클레임(Claim) 은 사용자, 권한, 유효기간 등의 정보를 담음(등록된, 공개, 비공개 클레임)
- 서명(signature) : 헤더와 페이로드를 인코딩한 후, 시크릿 키를 이용하여 생성되며, 서버는 이 서명을 통해 토큰의 유효성을 검증
JWT 사용사례
- JWT는 주로 사용자 인증에 활용됩니다. 사용자가 로그인하면 서버는 JWT를 발급하고, 클라이언트는 이를 사용하여 인증된 요청을 전송합니다.
- 클라이언트는 매 요청 시 헤더에 JWT를 포함하여 서버에 인증을 거칠 필요 없이 리소스에 접근할 수 있습니다.
JWT의 장단점
장점 | 간결하고 자가수용적이며, 토큰 자체에 정보를 포함하여 데이터베이스 조회를 줄일 수 있습니다. |
단점 | 토큰이 클라이언트에 저장되기 때문에 탈취될 경우 보안 문제가 발생할 수 있습니다. |
OAuth란?
OAuth는 제3자 애플리케이션이 사용자의 리소스에 접근할 수 있도록 인증 및 권한 부여를 관리하는 프로토콜
- OAuth는 주로 인증 서버, 리소스 서버, 클라이언트, 사용자로 이루어진 네 가지 주체에 의해 구성됩니다.
- 인증 서버는 사용자를 인증하고 클라이언트에게 액세스 토큰을 발급합니다.
- 액세스 토큰은 클라이언트가 리소스 서버에 접근할 수 있는 권한을 부여합니다.
OAuth 사용사례
OAuth는 주로 외부 서비스나 애플리케이션에 대한 접근 권한을 관리하기 위해 사용됩니다.
예를 들어, 사용자가 자신의 소셜 미디어 프로필에 다른 애플리케이션에 대한 액세스 권한을 부여할 때 OAuth가 사용됩니다.
OAuth 장단점
장점 | 사용자가 제3자 애플리케이션에 대한 액세스 권한을 안전하게 관리할 수 있고, 클라이언트 애플리케이션이 사용자의 데이터에 직접 접근하지 않고도 사용자의 데이터를 활용할 수 있습니다. |
단점 | 구현과 관리가 복잡할 수 있으며, 권한 부여 프로세스의 이해가 필요합니다. |
JWT와 OAuth의 차이점
- 목적
- JWT는 주로 사용자 인증에 초점을 맞추고 있으며, 인증된 사용자에 대한 정보를 포함합니다.
- OAuth는 주로 사용자의 리소스에 대한 접근 권한을 관리하고 부여하기 위한 권한 부여 프레임워크입니다.
- 데이터 포맷
- JWT는 JSON을 기반으로 하며, 클레임을 포함한 토큰입니다.
- OAuth는 프로토콜이며, 액세스 토큰을 통해 권한을 부여합니다.
- 사용 사례
- JWT는 사용자 인증을 위해 주로 웹 애플리케이션에서 사용됩니다.
- OAuth는 외부 서비스나 애플리케이션에 대한 접근 권한을 관리하기 위해 사용됩니다.
요약하면, JWT는 인증된 사용자에 대한 정보를 담고 있으며 클라이언트와 서버 간의 인증을 처리하기 위한 토큰이고,
OAuth는 사용자의 인증과 권한 부여를 위한 프로토콜로, 클라이언트가 사용자의 동의를 얻어 제한된 액세스 토큰을 발급받아 자원에 접근합니다.
+ 때문에 두 기술은 서로 보완적으로 사용될 수 있는데요. 예를 들어, OAuth를 사용하여 클라이언트 애플리케이션이 사용자의 데이터에 접근 권한을 얻은 후에, JWT를 사용하여 해당 사용자가 실제로 인증되었음을 증명할 수 있습니다.
참고자료
https://velog.io/@chanyoung1998/JWT-%EC%99%80-OAuth-%EC%9D%98-%EC%B0%A8%EC%9D%B4
'CS & Network' 카테고리의 다른 글
[Network] HTTP/HTTPS 프로토콜에 관하여 (0) | 2024.08.13 |
---|---|
RESTful API란 (0) | 2024.03.19 |
CI/CD란? (0) | 2024.03.17 |