G-Framework과 Single Sign-On 연동
- 작성자 :
- 박*주
- 작성일 :
- 2011-01-27 13:05:22
- 조회수 :
- 3,286
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요, 다가오는 설명절에 새해 복 많이 받으시기 바랍니다.
제가 드릴 질문은 G-Framework과 Single Sign-On 연동에 관한 부분입니다.
G-Framework의 보안모듈이 Spring Security를 적용하고 있는것으로 아는데, 일부 SSO 제품들이 단일 세션쿠키를 생성하여 대상 legacy들을 SSO로 묶거나, 혹은 WAS 앞단의 웹서버에 에이젼트를 설치하여 통상 연계하는 걸로 알고 있습니다.
이미 SSO 서버의 통합인증을 통과했을 경우(브라우져에 SSO 도메인 쿠키가 존재하거나 혹은 넘어오는 Request-Header에 특정 Value가 있을 경우) G-Framework에선 어떤 방식으로 시스템을 SSO에 매끄럽게(?) 연동하여 내부 Context를 생성해야 하는지에 대한 가이드를 부탁드립니다.
(web.xml에 Filter를 추가하여 SecurityContextHolder의 Authentication을 SSO서버의 인증토큰(쿠키나 특정값)으로 미리 Context를 생성 해야할 거 같은데...)
언제나 성실한 답변에 감사드립니다.
제가 드릴 질문은 G-Framework과 Single Sign-On 연동에 관한 부분입니다.
G-Framework의 보안모듈이 Spring Security를 적용하고 있는것으로 아는데, 일부 SSO 제품들이 단일 세션쿠키를 생성하여 대상 legacy들을 SSO로 묶거나, 혹은 WAS 앞단의 웹서버에 에이젼트를 설치하여 통상 연계하는 걸로 알고 있습니다.
이미 SSO 서버의 통합인증을 통과했을 경우(브라우져에 SSO 도메인 쿠키가 존재하거나 혹은 넘어오는 Request-Header에 특정 Value가 있을 경우) G-Framework에선 어떤 방식으로 시스템을 SSO에 매끄럽게(?) 연동하여 내부 Context를 생성해야 하는지에 대한 가이드를 부탁드립니다.
(web.xml에 Filter를 추가하여 SecurityContextHolder의 Authentication을 SSO서버의 인증토큰(쿠키나 특정값)으로 미리 Context를 생성 해야할 거 같은데...)
언제나 성실한 답변에 감사드립니다.
A
안녕하세요.. 박용주님..
Spring Security에서 사용자 정보를 생성시켜주는 요소는 "/j_spring_security_check" url입니다.
이 url은 context-security.xml에 <form-login ../>의 login-processing-url로 정의되어 있습니다.
이 URL에 j_username 및 j_password 정보를 파라미터로 넘겨.. 사용자정보를 생성하는 방식입니다.
따라서.. SSO 적용시.. 넘겨지는 token 상에 2개의 정보를 담아서..
내부적으로 해당 url을 forward 방식 또는 redirect 방식으로 호출하시면 됩니다.
공통컴포넌트의 일반로그인쪽 "EgovLoginController.java"를 참조하시면 redirect 방식으로 호출된 예가 있습니다.
문제는 j_password인데.. 첫번째 로그인시 입력된 패스워드에 대한 메모리상 보관(token으로 넘기기 위하여..)이 필요합니다.
추가적으로 SSO 연계상 사용자 ID가 공유되지 못하는 경우는 j_username 부분을 주민번호와 같은 것으로 사이트간 공유할 수 있는 정보를 유지하셔야 합니다.
(사용자 정보 자체를 복제 등의 방법으로 공유할 수 도 있음)
그럼.. 즐거운 하루되십시오.
감사합니다.
Spring Security에서 사용자 정보를 생성시켜주는 요소는 "/j_spring_security_check" url입니다.
이 url은 context-security.xml에 <form-login ../>의 login-processing-url로 정의되어 있습니다.
이 URL에 j_username 및 j_password 정보를 파라미터로 넘겨.. 사용자정보를 생성하는 방식입니다.
따라서.. SSO 적용시.. 넘겨지는 token 상에 2개의 정보를 담아서..
내부적으로 해당 url을 forward 방식 또는 redirect 방식으로 호출하시면 됩니다.
공통컴포넌트의 일반로그인쪽 "EgovLoginController.java"를 참조하시면 redirect 방식으로 호출된 예가 있습니다.
문제는 j_password인데.. 첫번째 로그인시 입력된 패스워드에 대한 메모리상 보관(token으로 넘기기 위하여..)이 필요합니다.
추가적으로 SSO 연계상 사용자 ID가 공유되지 못하는 경우는 j_username 부분을 주민번호와 같은 것으로 사이트간 공유할 수 있는 정보를 유지하셔야 합니다.
(사용자 정보 자체를 복제 등의 방법으로 공유할 수 도 있음)
그럼.. 즐거운 하루되십시오.
감사합니다.