주뇽's 저장소

[로그인] 기본인증 vs JWT vs OAuth2 본문

웹개발

[로그인] 기본인증 vs JWT vs OAuth2

뎁쭌 2023. 12. 24. 19:25
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를 생성하여 반환한다. 사용자는 이 토큰을 사용하여 요청한다. 사용자가 소셜 미디어 계정을 통해 다른 서비스에 로그인한다. 서비스는 사용자 프로필에 접근할 권한을 획득한다.