Spring security 세션 공유하려면 어찌해야할까요..?

2,416 views
Skip to first unread message

Oldy G

unread,
May 4, 2016, 5:19:58 AM5/4/16
to Korea Spring User Group Q&A

가능하면 혼자서 구글링 해보며 조사해보면서 진행하려고했지만 몇일째 제자리 걸음이라 이렇게 질문글 올려봅니다 ㅜ


먼저 A라는 사이트를 제작하였습니다.

이 사이트는 Spring boot와 Security를 이용해서  사이트 내에 모든 페이지와 기능들은 로그인을 해야 진입이 가능한 구조이구요 소셜로그인 역시 구현하였습니다.


문제는,, 새로운 B사이트를 만들고 사용자 계정정보는 A사이트의 정보를 이용하려고합니다.

물론 같은 데이터베이스를 사용한다면 정보 공유는 되겠지만

원하는건 한쪽사이트에서 로그인을 하면 다른 한쪽사이트도 로그인이 되는것이 목적이거든요..


이렇게 되면 A사이트에서 로그인 부분을 분리하여 또다른 서버를 생성을 해야하는것 같기도하고..

아니면 Oauth2 방식으로  새 서버를 생성해서 A,B 사이트들의 인증을 받게해야할것같기도하고..


그런데 이렇게 했을때 UserDetails 호출이 가능한지도 의문이고.. 막 이래저래 혼돈스럽네요 ㅜㅜㅜㅜ


저에게 도움의 손길을 뻗어주실분이 있으신가요..ㅜㅜ

신상훈

unread,
May 4, 2016, 5:49:13 AM5/4/16
to ks...@googlegroups.com
CAS같은 오픈소스 SSO를 검토해보시는 것도 좋을 것 같습니다. 

2016년 5월 4일 수요일, Oldy G<jhku...@gmail.com>님이 작성한 메시지:
--
이 메일은 Google 그룹스 'Korea Spring User Group Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
https://groups.google.com/group/ksug에서 이 그룹을 방문하세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ksug/ef941fc6-c35b-4d96-87bd-58f16cf3699e%40googlegroups.com을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

liam21c

unread,
May 4, 2016, 7:29:17 AM5/4/16
to Korea Spring User Group Q&A
Single Sign On 기능을 구현하시려고 하는거 같으신데요.
직접 구현하시려고 하신다면, 

SSO 기능을 구현하는 서버를 따로 생성하시는게 나을듯 합니다.
SSO 서버에서는 로그인 여부에 따라 sso 토큰을 생성하시고 세션에 매핑해서 관리하실 수 있을거 같구요.

각 사이트 A,B 에서는 Spring Security Filter Chain 앞에 SSO를 담당하는 Servlet Filter를 두시면 될거 같네요?

SSO 전반에 대해서 스터디 하시는게 도움이 되실듯 합니다 ^^

Steven J.S Min

unread,
May 4, 2016, 9:19:47 AM5/4/16
to Korea Spring User Group Q&A
아주 오래전에 경험했던거라...참고가 될지 모르겠는데요...
지금은 사용하는 인프라도 다르고하니까...

우선 제가 예전에 사용했던것은....웹로직기반위에 돌아가는 웹 어플리케이션이였습니다.
웹로직은 서버를 설치할경우... 서버타입(?)과....Managed타입으로 설치를 할수있는데...우리가 개발하는 웹 어플리케이션을 보통 Managed 라는 웹로직에 패포를 하게되지요...
그런 서버웹로직은..이 매니지드를 관리할수 있는 구조로 되어있습니다..(지금은 어쩐지 모르겠습니다)
그럼 한개이상의 Managed서버를 클러스터링화해서....세션을 공유시키는 방법이 있습니다...그래도 약간의 SSO기능의 앞단의 코드가 필요했던것 같구요..
이와 같은 방법은 어디까지나 동일한 어플리케이션을 클러스터링화 하는경우 해당되긴 하지만....지금 생각하면 다른 어플리케이션이라도 구성이 가능할것 같기도해서 언급해보았습니다....

말씀하신 A,B 어플리케이션이 다르고 단지 한번 로그인해서 다른 싸이트에도 로그인 없이 로그인을 하고 싶으시다면....
이미 다른분이 어급하신것 처럼 SSO를 처리해주는 오픈소스나 라이센스가있는 SSO를 생각하시는게 좋을것 같습니다....
간단히 만들고자한다면....어느 한싸이트에 로그인할때...해당하는 싸이트를 콜해서....인증정보를 넘겨서..로그인을 한다음...세션을 만드는 방법을 생각할수 있겠지요...

시스템 구성이 어떠냐에 따라서 좀 다른 방법이 있을것 같은데요..
모든 요청은 한군에서 받도록 어느 시스템 구조가 되어있다면....그곳에서 일괄적으로 받아서 해당 사이트에 로그인 프로세스를 거치게해서 세션을 만드는 방법도 있을거고요...

SSO관련해서..프로젝트 경험없는 경우....이것을 굉장히 단순하게 생각하는 경향이 있는데....제 경험으로는 절대 간단하지가 않습니다...
단지 로그인해서 로그인 세션만 필요하냐? 정말 그럴까요? 한번 로그인하면...또 관련된 (예를들어....부서정보...권한정보..등등등)정보들이 물고물고 늘어나는데요....그러면 점정 말도많고 탈도 많아 지지요..

아마...개발자 분께서.. SSO어떤것이고...얼마나 오버로드가 필요한지를 관련매니저나 담당자에게 상의후 진행하시는게...정신건강에 좋을것 같다는 생각을 해봅니다..

도움이 되었는지 모르겠군요...

Oldy G

unread,
May 5, 2016, 6:10:07 AM5/5/16
to Korea Spring User Group Q&A
헐.. 세분 모두 우수답변 등록하기?? 달려고했는데 한개밖에 안되는 구조였네요!!! 아쉬운맘에 별표랑 유용한 답글 다 체크했습니다!!

CAS, SSO 두 키워드만으로도 저에게 엄청난 실마리를 알려주셨습니다ㅜㅜ 감사합니다
나름 제가 하려는것을 이미 구현한 사이트(넥슨,넷마블 등) 사이트들의 로그인 구조를 보니까 자체 제작한 sso를 보긴 봤지만 눈을 돌렸었거든요...
뭔가 손이 많이갈것 같기도하고 '설마 Spring이면 이런것도 다 지원했겠지'란 생각으로 편한길로만 생각하고있었던것같애요 ㅠㅠㅠ
OAuth이용해서 프로바이더, 컨슈머 관계로 구현할뻔했네요 ㅋㅋㅋ!!!
모두들 감사합니다!!
Reply all
Reply to author
Forward
0 new messages