RestAPI를 제공하는 서버에서 Redis + Session을 통해 인증을 시도하고 있는데 직렬화가 되지 않습니다.
539
작성한 질문수 27
안녕하세요 강의 잘 보고 있습니다.
저는 지금 Rest API서버를 생성하고 인증을 하는 방식은 session으로 하고 session 저장소를 Redis로 옮겨 구현하고자 합니다.
그러나 강의와는 다르게 @EnableRedisHttpSession 어노테이션을 추가해도 Redis에 저장이 되지 않는 오류가 있는데 이를 어떻게 해결해야할지 모르겠어 질문을 드립니다.
Redis가 아닌 Memory에 저장을 하였을때는 정상 동작하였으며 디버깅을 통해 문제의 원인을 파악해본 결과 SecurityContextImpl 객체에 대한 직렬화를 수행해주는 클래스가 존재하지 않아 오류가 발생하는 듯 합니다.
혹시 이 문제에 대해 도움을 받을 수 있을까요?
문제상황을 작성해놓은 포스팅과 프로젝트의 압축파일을 첨부해드리도록 하겠습니다.
추가로 프로젝트 환경은 로컬에서 진행하였으며 H2 DB와 Redis를 사용하였습니다.
https://goto-pangyo.tistory.com/286
https://drive.google.com/file/d/1DccNwJWmUPBpe3KwsqxPp_VpYIAQRRaR/view?usp=sharing
답변 2
1
혹시 저와 같은 문제를 겪고 계신 분들이 계실까 글을 남깁니다.
결론부터 말씀드리면 직렬화를 하고자하는 클래스(세션에 저장하고자 하는 클래스)에서 Serializable인터페이스를구현하면 됩니다. 또한 제가 공식문서에서 찾아본 결과@EnableRedisHttpSession 어노테이션을 추가할 경우 sessionRepositoryFilter 가 추가됩니다. 그리고 해당 클래스는 Session 클래스를 한번 감싼것으로 기존의 http session 관련 메소드를 오버라이딩하여 기능을 커스터마이징이 가능합니다.(저 같은 경우에는 redis를 세션 저장소로 사용)
1
추가로 @EnableRedisHttpSession에 대해 궁금한 점이 있습니다.
해당 어노테이션을 사용하였을 경우 스프링이 RedisIndexedSessionRepository를 통해 Redis에 세션 저장을 자동으로 구현하는 듯한데
이는 UserNamePasswordAuthenticationFilter에서만 그런것인가요?
아니면 다음과 같이 사용자 정의 필터를 구현하고 인메모리에 세션 영속화를 하였을때도 Redis에 저장이 되는건가요?
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
28
2
단원별 소스코드
0
59
2
CustomAuthenticationProvider 추가 관련 문의
0
69
2
AOP 의존성 명칭 변경
0
65
1
빈 1개 등록 시 다른 해결 방법
0
65
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
85
2
OIDC의 id token에 담긴 데이터에 대해
0
74
1
loginPage("/loginPage") 질문드립니다.
0
69
1
@EnableWebSecurity
0
147
1
트랜잭션과 롤백
0
99
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
88
2
AuthenticationManager 사용 방법
0
148
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
104
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
190
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
106
2
메타 주석 질문
0
68
1
동시세션제어 기능에서 로그아웃하기
0
147
3
로그인 후, redirect 에서 error
0
138
3
Session 생성 타이밍에 대한 질문
0
84
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
133
2
customAuthentication 관련
0
127
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
110
1
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
0
101
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
159
2





