Security

[security] JWT, session, OAuth이란 무엇일까?

임성장 2023. 8. 14. 18:16
728x90

JWT (JSON Web Token)

  • 웹 토큰을 나타내며, JSON 형식을 사용하여 정보를 안전하게 전달하는 열린 표준
  • 주로 사용자 인증과 정보 교환에 활용
  • JWT는 페이로드(payload), 서명(signature), 헤더(header)로 구성
  • 페이로드는 토큰에 포함될 정보
  • 서명은 토큰의 무결성을 검증하기 위한 서명
  • 헤더는 토큰의 종류와 해싱 알고리즘을 나타냄
  • JWT는 클라이언트-서버 간의 인증에 자주 사용되며, 정보가 안전하게 전달되고 검증됨을 보장

요약

유저에게 중요한 정보를 암호화해서 보여주고 요청이 있을 때 암호화된 정보를 확인해서 요청을 진행한다.

장점

DB의 부담이 적음

단점

session 방식보다는 보안적으로 취약함.

 

세션 (Session)

  • 웹 애플리케이션에서 사용자의 상태를 유지하기 위한 기술
  • 사용자가 웹 사이트에 접속하면 서버는 해당 사용자를 위한 고유한 세션을 생성하고 식별자를 부여
  • 이 식별자는 쿠키나 URL 매개변수를 통해 클라이언트로 전달되며, 서버는 이를 통해 사용자의 세션 상태를 유지하고 관리
  • 세션은 주로 서버 측에서 관리되며, 사용자 인증 정보나 기타 중요한 데이터를 안전하게 저장하고 관리하는 데 사용

요약

유저에 대한 중요한 정보는 DB에 저장하고 유저에게는 식별자만 부여

그리고 유저에게 요청이 오면 DB 내의 데이터와 식별자를 비교해서 일치한다면 요청을 진행

장점

매번 DB와 대조를 하기 때문에 엄격하게 체크가 가능

단점

DB의 부담이 심해질 수 있음

 

OAuth (Open Authorization)

  • 외부 애플리케이션이 사용자의 정보에 접근할 수 있는 권한을 제공하는 프로토콜
  • 주로 소셜 미디어나 서드파티 애플리케이션과의 통합에서 사용
  • 사용자가 자신의 정보를 안전하게 공유하면서도 자신의 계정 정보를 직접 노출하지 않을 수 있도록 합
  • 클라이언트, 리소스 서버, 인증 서버 등의 역할로 구성
  • 사용자는 클라이언트에게 자신의 정보에 접근하는 권한을 부여하고, 클라이언트는 리소스 서버에 접근 권한을 얻어 사용자의 정보를 가져오거나 조작
728x90