헤더.페이로드.시그니쳐 부분으로 나뉜다.헤더는 어떤 암호화 알고리즘을 사용할 것인지, 페이로드는 JSON에 담길 정보, 시그니쳐는 전자서명을 나타내는 부분이다.전자 서명의 경우, 헤더+페이로드+서버에 담긴 시크릿 키로 합쳐 암호화된다.클라이언트가 헤더, 페이로드, 시그
기존 세션 방식은 서버 부하를 나누기 위해 로드 밸런싱을 할 때 문제가 발생한다. 서버는 자신에게 클라이언트의 세션 정보가 있을 때만 동일한 클라이언트인지 인식할 수 있다. 그런데 로드 밸런싱에 의해 클라이언트가 다른 서버로 접속해야 한다고 하자. 그러면 해당 서버는
JWT를 사용하기 위해서는 세션을 사용하지 않겠다는 설정크로스 오리진 모두 허용하도록 설정폼 로그인 방식을 사용 하지 않겠다는 설정기본 HTTP 방식을 사용하지 않겠다는 설정이 필요하다.크로스 오리진 설정용 필터 요청을 보낼 때, Header에 Authorization
커스텀 필터 클래스를 만들려면 Filter 인터페이스의 doFilter()를 재정의해야 한다.filterChain.doFilter(servletRequest,servletResponse); 는 필터체인에 등록되있는 다음 필터를 호출하는 코드이다.커스텀 필터를 필터체인에
formLogin()을 이용하는 방식이다. 폼 로그인 방식을 이용하면 시큐리티가 제공하는 UsernamePasswordAuthenticationFilter 의 attemptAuthentication()이 호출된다.formLogin().disable()할 경우의 구조다.
회원 가입 시 password encoding을 해줘야 에러가 발생하지 않는다.attemptAuthentication 호출 후 Authentication 객체를 리턴하게 되면 시큐리티 세션 영역에 저장된다. jwt 토큰을 사용하면 세션이 필요 없지만, 권한 관리를 시큐
JWT 토큰 발급은 로그인 성공 이후의 처리를 담당하는 successfulAuthentication 에서 해준다.단, 발급만 해줄 뿐이지 클라이언트로부터 오는 JWT 토큰의 인증을 처리해주지는 않는다.해당 부분은 필터를 만들어서 처리해야 한다.POSTMan으로 요청해
만약 유저네임, 패스워드가 정상이면 로그인이 된다.서버쪽에 세션 ID가 생성된다.클라이언트에게 세션 ID가 담긴 쿠키를 제공한다.클라이언트가 요청할 때마다 항상 쿠키에 담긴 세션 ID를 갖고 있어야 한다.서버는 세션 ID가 유효한지 판단(스프링 시큐리티의 경우 자동임
첫 로그인 시 구조JWT 토큰 발급 이후의 구조첫 로그인에는 UserDetailsService 구현체의 loadUserByUsername()이 호출된다.하지만 첫 로그인 이후엔 JWT 토큰이 발급되었다. 그 때부터는 UserDetailsService 구현체를 호출하지