인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

리나님의 프로필 이미지
리나

작성한 질문수

스프링 시큐리티 OAuth2

OAuth2 로그인 구현 - Authorization Code 요청하기

OAuth2 로그인 구현 - Authorization Code 요청하기 - OAuth2AuthorizationRequest 객체 세션 저장 문제

작성

·

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 와 같은 세션서버를 두고 각 서버가 세션을 공유하도록 구성을 하는 편입니다.

아니면 각 서버마다 세션을 클러스터링 해서 모든 서버가 동일한 세션을 공유하도록 설정을 할 수도 있습니다.

아무래도 세션공유서버를 사용하는 방식이 더 간편하고 효율적입니다.

스프링 시큐리티에서는 레디스를 사용해서 세션을 공유할 수 있는 기능을 제공하고 있습니다.

구글에서 검색해 보시면 여러 예제와 방법들이 나와 있으니 참고해 주시기 바랍니다.

쿠키에 저장하는건 보안적인 측면에서 이슈가 있나요??

리나님의 프로필 이미지
리나

작성한 질문수

질문하기