[SpringBoot] 인증 JWT 개념

Posted by nkjok
2025. 2. 7. 10:08 낙서장[1]/2. SpringBoot
반응형

웹 개발 및 인증 절차와 관련된 다양한 기술과 개념이 손글씨로 적혀 있습니다. 주요 내용은 다음과 같습니다:

  • React: 사용자 인터페이스를 구성하는 프론트엔드 라이브러리입니다.
  • Nginx: 고성능 웹 서버 및 리버스 프록시 서버로 사용됩니다.
  • 4요 웹서버: 네 개의 주요 웹 서버를 의미하는 것 같습니다.
  • Http 요청하고/Http 응답하기: HTTP 요청과 응답을 처리하는 과정입니다.
  • Http 요청 body: 요청 본문에 대한 내용입니다.
  • "Authorization...": 인증 헤더를 사용한 요청입니다.
  • JWT 토큰: JSON Web Token으로, 인증 및 권한 부여에 사용됩니다.
    • typ JWT: JWT 타입을 지정하는 클레임입니다.
    • claim: JWT에 포함된 정보입니다.
    • Signature: JWT의 무결성을 검증하는 서명입니다.
  • App Server: 애플리케이션 서버를 의미합니다.
  • Tomcat: Java 서블릿 및 JSP를 실행하는 애플리케이션 서버입니다.
  • WAS: Web Application Server, 즉 웹 애플리케이션 서버를 의미합니다.

JWT 동작 방식

  1. JWT 생성: 사용자가 로그인하면 서버는 사용자 정보를 기반으로 JWT를 생성합니다. JWT는 헤더(header), 페이로드(payload), 서명(signature)로 구성됩니다.
    • 헤더: 토큰 타입과 알고리즘 정보를 포함합니다.
    • 페이로드: 사용자 정보(클레임)를 포함합니다.
    • 서명: 비밀키를 사용하여 JWT의 무결성을 검증합니다.
  2. JWT 전송: 생성된 JWT는 클라이언트(브라우저)에 전송되고, 클라이언트는 이를 저장(예: 로컬 스토리지)합니다.
  3. JWT 사용: 클라이언트는 이후의 요청에 JWT를 포함하여 서버에 보냅니다. 주로 Authorization 헤더에 Bearer 토큰 형식으로 전송됩니다.
  4. JWT 검증: 서버는 요청을 받을 때마다 JWT의 서명을 검증하여 토큰의 유효성을 확인합니다. 유효한 경우, 페이로드에 포함된 사용자 정보를 통해 권한을 부여하거나 거부합니다.

예제 시나리오

  1. 사용자가 로그인합니다.
  2. 서버가 JWT를 생성하여 클라이언트에 전송합니다.
  3. 클라이언트가 JWT를 저장합니다.
  4. 이후의 모든 요청에 클라이언트가 JWT를 포함하여 서버에 보냅니다.
  5. 서버가 JWT를 검증하고 요청을 처리합니다.
반응형