
서버와 클라이언트의 통신 프로토콜인 HTTP의 비연결성, 비상태성이라는 특징으로 인해 쿠키와 세션을 이용한다.클라이언트가 서버에게 request를 보냈을 때 그 request에 맞는 response를 보낸 후에는 클라이언에 대해 알 수 없게 된다.만약 쿠키와 세션을 사

Json 객체에 인증에 필요한 정보들을 담은 후 비밀키로 서명한 토큰으로, 인터넷 표중 인증 방식이다. 공식적으로 인증(Authentication) & 인가(Authorization) 방식으로 사용된다.HeaderJWT에서 사용할 토큰의 타입과 암호화 알고리즘 정보로

/login 경로로 요청이 들어오면 UsernamePasswodAuthenticationFilter를 통해서 회원 검증 로직을 작성하고 AuthencationManager를 통해서 내부적으로 로그인을 검증함.검증은 데이터베이스에 저장된 유저 정보를 꺼내서 UsterDe

JWT 방식을 활용하므로 세션을 stateless하게 관리state less클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다.Stateless 구조에서 server는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, 세션 관리는 클라이언트에

스프링 시큐리티는 클라이언트의 요청이 여러 개의 필터를 거쳐 DispatcherServlet(Controller)으로 향하는 중간 필터에서 요청을 가로챈 후 검증(인증/인가)을 진행한다.클라이언트 요청 -> 서블릿 필터 -> 서블릿 (컨트롤러)Delegating Fil

JWT 발급과 검증로그인시 -> 성공 -> JWT 발급접근시 -> JWT 검증HeaderJWT임을 명시사용된 암호화 알고리즘Payload정보Signature암호화 알고리즘(Base64(Header) + Base64(Payload) + 암호화키)JWT의 특징은 내부 정보

스프링 시큐리티 filter chain에 요청에 담긴 JWT를 검증하기 위한 커스텀 필터를 등록해야 한다. 해당 필터를 통해 요청 헤더 Authorization 키에 JWT가 존재하는 경우 JWT를 검증하고 강제로 SecurityContextHolder에 세션을 생성한

프론트 서버를 따로 띄울 경우 (리액트 + 스프링) Cors 발생SecurityConfig (시큐리티 단)추가CorsMvcConfig (컨트롤러 단)두가지 모두 처리

로그인 페이지성공 후 코드 발급 (redirect_url)코드를 통해 Access 토큰 요청Access 토큰 발급 완료유저 정보 획득 완료JWT 방식에서는 로그인(인증)이 성공하면 JWT 발급 문제와 웹/하이브리드/네이티브앱별 특징에 의해 OAuth2 Code Gran

클라이언트가 소셜 로그인 시도백엔드 측으로 소셜 로그인 요청 (/oauth2/authorization/서비스명)OAuth2AuthorizationRequestRedirectFilter가 해당 요청을 잡아서 외부 인증 서버에 요청을 전달인증 서버는 로그인 페이지를 전달로

application.properties registration과 provider registration은 외부 서비스에서 우리 서비스를 특정하기 위해 등록하는 정보여서 등록이 필수적이다. 하지만 provider의 경우 서비스별로 정해진 값이 존재하며 OAuth2 클

OAuth2 클라이언트 의존성에 의해 필터나 Provider는 기본적으로 제공을 해준다. 하지만 리소스 서버에서 제공해주는 유저 정보는 직접 구현해야 한다. OAuth2Response 네이버 데이터 구글 데이터 OAuth2Response 인터페이스(DTO)

로그인 성공 JWT 발급: 서버측 -> 클라이언트로 JWT 발급권한이 필요한 모든 요청: 클라이언트 -> 서버측 JWT 전송권한이 필요한 요청은 서비스에서 많이 발생한다.(회원 CURD, 게시글/댓글 CRUD, 주문 서비스 등)따라서 JWT는 매시간 수많은 요청을 위해

로그인이 성공하면 기존에 단일 토큰만 발급했지만 Access/Refresh에 해당하는 다중 토큰을 발급해아 한다.따라서 로그인이 성공한 이후 실행되는 successfulAuthentication() 메소드 또는 AuthenticationSuccessHandler를 구현

프론트의 API Client로 서버측에 요청을 보낸 후 데이터를 획득한다. 이때 권한이 필요한 경우 Access 토큰을 요청 헤더에 첨부하는데 Access 토큰 검증은 서버측 JWTFilter에 의해 진행된다. 이때 Access 토큰이 만료된 경우 특정한 상태 코드 및

서버측 JWTFilter에서 Access 토큰의 만료로 인한 특정한 상태 코드가 응답되면 프론트측 Axios Interceptor와 같은 예외 핸들러에서 Access 토큰 재발급을 위한 Refres를 서버측으로 전송한다. 이때 서버에서 Refresh 토큰을 받아 새

단순하게 JWT를 발급하여 클라이언트측으로 전송하면 인증/인가에 대한 주도권 자체가 클라이언트 측에 맡겨진다.JWT를 탈취하여 서버측으로 접근할 경우 JWT가 만료되기 까지 서버측에서는 그것을 막을 수 없으며, 프론트측에서 토큰을 삭제하는 로그아웃을 구현해도 이미 복제