웹 애플리케이션에서 사용자 인증과 정보를 안전하게 전달하기 위해 널리 사용되는 컴팩트하고 독립적인 방법입니다.
사용자 인증: 사용자가 로그인하면 서버는 사용자 정보를 바탕으로 JWT를 생성합니다. 이때 사용된 비밀 키를 통해 서명이 생성됩니다.
토큰 전송: 생성된 JWT는 클라이언트(예: 웹 브라우저)로 전송됩니다. 이후 클라이언트는 이 토큰을 로컬 스토리지 또는 쿠키에 저장합니다.
인증된 요청: 클라이언트는 서버에 요청할 때마다 JWT를 포함시켜 보냅니다. 주로 HTTP 요청의 Authorization 헤더에 Bearer 토큰으로 전송합니다.
서버 검증: 서버는 전달받은 JWT의 서명을 검증하여 토큰이 변조되지 않았는지 확인한 후, 페이로드에 포함된 사용자 정보를 바탕으로 요청을 처리합니다.
.
.
.
궁금한 것들 적어두는 중
Spring Security에서 사용되는 JWT 인증 필터
클라이언트의 요청에 포함된 JWT를 검증하고, 유효한 토큰일 경우 인증된 사용자 정보를 Spring Security의 SecurityContext에 설정하는 역할을 합니다. 이 과정을 통해 이후의 요청들은 인증된 사용자로 처리됩니다.
-SecurityContext-
Spring Security에서 사용자의 인증 및 권한 정보를 저장하는 중앙 저장소 역할을 하는 인터페이스. 애플리케이션의 현재 실행 중인 스레드와 관련된 보안 컨텍스트를 관리하며, 주로 인증된 사용자의 정보를 유지합니다.
-Bearer 토큰-
Bearer 토큰은 사용자가 API 서버에 요청을 보낼 때 Authorization 헤더에 포함되는 보안 토큰입니다.
이 토큰은 서버에서 사용자를 인증하는 데 사용됨.
-API (Application Programming Interface)-
소프트웨어 응용 프로그램이 서로 통신하고 상호 작용할 수 있도록 해주는 일련의 규칙과 도구를 말합니다. 쉽게 말해, API는 두 시스템 간의 중개자 역할을 하며, 한 시스템이 다른 시스템의 기능을 사용할 수 있게 합니다.
사용자 정보를 기반으로 JWT를 생성하고, 생성된 JWT의 유효성을 검사하며, JWT에서 사용자 정보를 추출하는 기능을 제공합니다.
-Bean-
스프링 프레임워크에서 매우 중요한 개념으로, 스프링 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 의미합니다. 스프링 애플리케이션에서 사용되는 모든 객체들은 스프링이 관리하는 Bean으로 정의될 수 있습니다.
-스프링 IoC 컨테이너-
애플리케이션에서 객체(Bean)를 생성하고 관리하며, 객체들 간의 의존성을 설정해주는 역할. 컨테이너는 애플리케이션이 실행될 때 Bean을 생성하고 초기화하며, 필요할 때 Bean을 주입해줍니다.