주뇽's 저장소
[로그인] 기본인증 vs JWT vs OAuth2 본문
728x90
반응형
1. 기본 인증 (Basic Authentication)
특징
- HTTP 인증 방식 중 가장 간단하다.
- 사용자 이름과 비밀번호를 결합하여 Base64로 인코딩한 후 전송한다.
- HTTP 헤더의
Authorization
필드에 사용한다.
장점
- 구현이 간단하고 이해하기 쉽다.
- 기본적인 인증 요구사항에 적합하다.
단점
- 보안이 약하다. HTTPS와 함께 사용하는 것이 필수적이다.
- 매 요청마다 사용자 이름과 비밀번호를 전송해야 한다.
예시
- 사용자가 웹사이트에 로그인하려고 하면, 브라우저가 사용자 이름과 비밀번호를 요청하여 서버에 전송한다.
2. JWT (JSON Web Token)
특징
- 자가 포함된 토큰 방식을 사용한다.
- 사용자 정보와 인증 데이터를 JSON 형태로 담아 암호화한다.
- 헤더, 페이로드, 서명으로 구성된다.
장점
- 확장성이 높고 여러 시스템 간에 효과적으로 인증 데이터를 교환한다.
- 상태를 유지할 필요가 없어 서버의 부하를 줄일 수 있다.
단점
- 토큰이 탈취되면 정보가 노출될 수 있다.
- 구현 난이도가 높을 수 있다.
예시
- 사용자가 로그인하면 서버는 사용자 정보를 바탕으로 JWT를 생성하여 사용자에게 반환한다. 사용자는 이후 요청에서 이 토큰을 사용한다.
3. OAuth 2.0
특징
- 타사 애플리케이션에 사용자 계정에 접근할 권한을 부여하는 프레임워크다.
- 여러 역할을 분리한다.
장점
- 사용자가 직접 자신의 비밀번호를 제공하지 않고도 서드파티 애플리케이션에 접근 권한을 제공한다.
- 다양한 권한 수준과 인증 방식을 지원한다.
단점
- 구현이 복잡하다.
- 보안 구현이 잘못되면 취약점이 될 수 있다.
예시
- 사용자가 소셜 미디어 계정을 통해 다른 서비스에 로그인하고, 이 서비스는 사용자의 소셜 미디어 프로필에 접근할 수 있는 권한을 획득한다.
특성 | 기본 인증 (Basic Authentication) | JWT (JSON Web Token) | OAuth 2.0 |
---|---|---|---|
정의 | 가장 간단한 HTTP 인증 방식. 사용자 이름과 비밀번호를 Base64로 인코딩하여 전송한다. | 자가 포함된 토큰 방식으로, 사용자 정보와 인증 데이터를 JSON 형태로 담아 암호화한다. | 타사 애플리케이션에 사용자 계정에 접근할 권한을 부여하는 프레임워크다. |
구성 | 사용자 이름:비밀번호의 조합, Base64 인코딩 | 헤더, 페이로드, 서명 | 리소스 소유자, 클라이언트, 인증 서버, 리소스 서버 |
장점 | 구현 및 사용이 간단하다. | 확장성이 높고, 상태를 유지할 필요가 없다. | 사용자의 비밀번호 노출 없이 타사 서비스 권한 부여가 가능하다. |
단점 | 보안이 약하다. HTTPS와 함께 사용 필요. | 보안 관리가 중요하다. 구현 난이도가 높을 수 있다. | 구현이 복잡하고, 보안 구현에 주의가 필요하다. |
적용 예시 | 웹사이트 로그인 시, 사용자 이름과 비밀번호를 서버에 전송한다. | 사용자 로그인 후, 서버가 JWT를 생성하여 반환한다. 사용자는 이 토큰을 사용하여 요청한다. | 사용자가 소셜 미디어 계정을 통해 다른 서비스에 로그인한다. 서비스는 사용자 프로필에 접근할 권한을 획득한다. |
'웹개발' 카테고리의 다른 글
성능테스트를 위한 JMeter 사용 방법(2) - Redis를 이용한 성능 개선 (0) | 2024.06.15 |
---|---|
성능테스트를 위한 JMeter 사용 방법(1-1) (0) | 2024.06.15 |
성능테스트를 위한 윈도우와 Mac에서 JMeter 설치 방법 (0) | 2024.06.15 |