작성
·
765
1
안녕하세요! 좋은 강의 너무 감사드립니다!
한가지 질문 드릴께 있습니다.
OAuth2 로그인 구현 - Authorization Code 요청하기
26:25분
내용을 보면 첫번째 인증 단계! (response type = code)
OAuth2AuthorizationRequest 객체 담아서
인가 서버 (keyclack 서버) 에 전달 하게 되는데요
이것과 동시에
OAuth2AuthorizationRequest 객체를 sesstion 에 저장을 하게 됩니다.
그러면 사용자는 인가 서버 (keyclack 서버) 로그인을 성공적으로 해결된다면
미리 지정된 redirect url 통해
Authorization Code 값을 전달해주는데요!
그런 후 미리 OAuth2AuthorizationRequest 객체를 sesstion 저장된것을 가져오는데
만약 해당 서버가 1개 라서 다행이지만
scale out 경우 그러니깐 서버가 2대 이상이라면
맨처음 OAuth2AuthorizationRequest 객체 저장할때가
1번 서버라면
OAuth2AuthorizationRequest 객체를 가져올때가
2번 서버라면
이때 각각 다른 서버이기 때문에 가져오지 못하는 문제가 발생되지 않나요?
이때는 어떻게 해결해야 할까요??..
OAuth2AuthorizationRequest 객체를 외부 세션 서버로 저장 할수 있도록 다시 로직을 재구현 해야 하는걸까요?
답변 1
3
네
서버 이중화로 인한 세션 공유 부분은 일반적으로 Redis 와 같은 세션서버를 두고 각 서버가 세션을 공유하도록 구성을 하는 편입니다.
아니면 각 서버마다 세션을 클러스터링 해서 모든 서버가 동일한 세션을 공유하도록 설정을 할 수도 있습니다.
아무래도 세션공유서버를 사용하는 방식이 더 간편하고 효율적입니다.
스프링 시큐리티에서는 레디스를 사용해서 세션을 공유할 수 있는 기능을 제공하고 있습니다.
구글에서 검색해 보시면 여러 예제와 방법들이 나와 있으니 참고해 주시기 바랍니다.
쿠키에 저장하는건 보안적인 측면에서 이슈가 있나요??