권한 처리 세션 사용
445
작성한 질문수 1
유익한 강의 감사드립니다.
질문이 있습니다.
권한처리를 위해 세션을 사용하게 되면
서버가 여러대일 경우
어떤 서버에는 권한정보가 있고
어떤 서버에는 없을 수도 있지 않나요?
이런 경우 스프링 시큐리티가 자동으로 알아서 처리를 해주는건가요?
세션을 사용하지 않고 JWT 를 사용하는 이유중에 하나가
서버가 여러대 일 경우의 세션 문제를 해결하기 위함도 있다고 하셨는데
마찬가지로 서버가 여러대라면 권한처리를 위한 권한정보를 동일하게 맞춰(?) 주는 무엇인가가 필요하지 않나요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
가명님의 질문에 대한 답변입니다.
분산 시스템 환경에서 여러 대의 서버를 사용하는 경우, 세션 정보의 일관성을 유지하는 것이 중요한데요, 이를 해결하기 위해 일반적으로 Spring Session과 같은 기술을 사용합니다. Spring Session을 활용하면 서블릿 웹 어플리케이션이든, 리액티브 웹 어플리케이션이든 독립적인 세션 스토어를 통해 세션 정보를 공유하고 일관성을 유지할 수 있습니다.
예를 들어, Spring Boot는 Redis, JDBC, Hazelcast, MongoDB 등을 데이터 스토어로 하여 Spring Session의 자동 구성을 제공합니다. 만약 Redis를 데이터 스토어로 사용하는 경우, Redis와 연동하여 여러 서버 간에 세션 정보를 공유하므로 어느 서버에서든 사용자의 권한 정보를 일관되게 유지할 수 있습니다. 자세한 내용은 스프링 공식 문서를 참고하실 수 있습니다.
JWT를 사용하는 경우에는 세션을 서버에 저장하지 않고, 사용자의 인증 정보를 토큰에 담아 클라이언트가 가지고 다니며 서버에 전송하므로, 서버 측에서 세션을 유지할 필요가 없습니다. 이로 인해 서버가 여러 대가 있어도 각 서버에 권한 정보를 일치시킬 필요가 없고, 스케일 아웃이 용이합니다.
스프링 시큐리티는 JWT 토큰을 적절하게 검증하고 파싱하여 권한 정보를 생성하는 과정을 자동으로 처리할 수 있도록 도와줍니다. 물론 스프링 시큐리티를 활용해 추가적인 권한 검증 로직을 구현할 수도 있습니다.
세션 기반 인증과 JWT 기반 인증은 각기 장단점을 가지고 있으며, 어플리케이션의 요구사항이나 환경에 따라 적합한 방법을 선택하시면 됩니다.
JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?
0
98
1
Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?
0
401
1
13:23 system.out 출력문이 다르게 나옵니다.
0
130
1
수료증 문의
0
227
2
9분대에 질문이 있습니다 !
0
115
1
password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?
0
321
1
이전 강의 참고하라는 말씀
0
253
1
강의 실습하다가 막히는 분들 참고(2024년8월 기준)
2
1116
2
구글 소셜 로그인 302
0
201
1
오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize
1
585
1
[자바] 시큐리티 Config 참고
13
953
1
이론강의
0
280
1
SpringSecurity JWT 로그인 URL 2개 설정하는 방법
0
488
1
2024.06기준) 최근 SecurityConfig 설정 문의
0
922
3
구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.
0
678
2
특정 url필터 거는 방법 이슈
0
422
1
강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?
0
279
1
25강 마지막 테스트에서 오류
1
1044
2
jwt를 저장하는 위치에 궁금한 점이 있습니다.
0
298
1
mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데
0
697
1
세션 인증방식이 REST 원칙에 위배되는 건가요?
0
342
1
jwt와 실제데이터의 관계
1
246
1
jwt 와 세션ID의 관계
1
313
1
SecurityConfig에서 세션 설정, 인가 설정
0
422
1





