시큐리티 필터 체인에서 JWT 인증 구현할 때 인증이 되었으면 SecurityContext 세션에 접근해서 저장한다고 하는데 JWT는 세션 저장을 원래 안하고 서버에서 JWT가 유효한지만 확인만 하지 않나요??
근데 시큐리티 필터 체인에서 JWT 인증이 되면 시큐리티 세션에 저장한다고 하니 .... 헷갈리네요...
시큐리티 필터 체인에서 JWT 인증 구현할 때 인증이 되었으면 SecurityContext 세션에 접근해서 저장한다고 하는데 JWT는 세션 저장을 원래 안하고 서버에서 JWT가 유효한지만 확인만 하지 않나요??
근데 시큐리티 필터 체인에서 JWT 인증이 되면 시큐리티 세션에 저장한다고 하니 .... 헷갈리네요...
브라우저나 사용자쪽 클라이언트가 토큰 보관했다가 resource 서버가 토큰 검증하는 식으로도 쓸수있고 spring oauth2 client 사용하면 서버에서 토큰 들고있다가 브라우저에서 요청 날리면 리소스서버에 들고있던 토큰으로 요청 날리는식으로도 할 수 있음
두번째 경우에는 첫번째 경우랑 비슷하긴 한데 브라우저랑 리소스 서버 사이에 별개 서버가 추가된거라 보면 됨 브라우저는 jsessionid만 들고있고 서버로 요청 날리면 서버는 들고있던 토큰으로 리소스 서버에 요청 날리는 형태
오 감사합니다
그러면 그 로그인 할 때 쓰는 세션과 시큐리티 세션이랑 용도나 목적이나 장소가 아예 별개라고 생각해도 되나요?
세션에 security context가 저장되는거 아닌가? 나도 모름
jwt가 유효한지만 검증하고 인증된 사용자가 누군지 저장하지않으면.. 그 다음 동작을 어떻게 수행..?? 예를 들어 마이페이지 데이터를 가져올때도.. SecurityContext에 저장하지않으면.. jwt를 다시 파싱해서 값을 꺼낼것..?? 인증할때 이미 파싱해서 검증했을텐데..
그러면 세션에서의 문제점인 서버의 과부하라는 점이 그대로 JWT에도 발생이 되는거 아닌가요?
그렇게 되면 세션을 말고 jwt 쓰는 의미가 있나요??
세션에 올바른 jwt 정보인지 아예 저장을 안하면, 애초에 어케 그게 올바른 jwt정보인지 서버가 검증을 하지?
SecurityContext의 생명주기와 작동방식에 대해서 검색해보길 추천하고.. 세션의 경우.. 서버에 세션파일이 저장이 될텐데.. 만약 서버가 여러대라면..? 세션을 레디스에 저장하거나.. 세션이 생성되면 다른 서버에도 복제하거나, 로드밸런싱에서 같은 서버를 물게 처리를 해줘야겠지.. 근데 jwt는 그럴필요가 없다.. 왜지??
jwt 검증 자체는 인증서버에서 토큰 발급할때 서명하면 인증서버 호출 없이 아무데서나 검증할 수 있음
서버를 어떻게 구성하냐에 따라 서버가 토큰 들고있고 클라에는 jsessionid만 들고있게 할 수도 있고 아니면 걍 아예 클라가 토큰 들고있게 할수도 있음
고맙습니다 형님들..