몇 가지 애플리케이션에 대해 Spring Jasig CAS SSO를 설정했습니다. 여기에는 CasAuthenticationFilter
이 사용됩니다. 그래서 나는 이런 웹 애플리케이션을 만들었습니다 -CasAuthenticationFilter에 대한 사전 인증 필터 설정하기
Cas Server (Cas 3.5.2) - Cas.war
, App1 - App1.war
및 App2 - App2.war
. 응용 프로그램은 Spring 3.2.3 및 Spring Security 3.1.4.RELEASE를 사용합니다.
Spring Security Config
: http://pastie.org/private/qxcx1h8i9ys0w3lmwegiw
상황이이 설정 정상적으로 작동하는 것. 이제 Spring Cas를 통하지 않고 Cas Server에서 OAuth를 사용할 수있게되었을 때, 저는 설정 한 일반적인 폼 기반 인증과 인증을 통합 할 수 없었습니다. 페이 스북 (Facebook) OAuth 통합은 페이스 북 프로필 속성이 로그에서 성공적으로 검색된 것을 볼 수 있으므로 제대로 작동하는 것 같습니다. 문제는 페이스 북 로그인 후, CasAuthenticationFilter가 폼 기반 로그인과 비슷한 메커니즘으로 "FacebookProfile # XYZXYZ"사용자를 인증하려고 시도하고 분명히 사용자를 위해 데이터베이스 테이블에서 해당 사용자를 찾지 못한다는 것입니다. 내 생각 엔 내가 AbstractPreAuthenticatedProcessingFilter
및 PRE_AUTH_FILTER
전에 위치 (위의 pastie 구성 확인)하고 어떻게 든 Authentication
권한을 설정해야합니다으로, 그래서 CasAuthenticationFilter
사용자가 이미 로그인되어 있음을 알아야한다을 확장하는 사용자 정의 필터를 작성해야한다는 것입니다.
이 URL이 로그에 따라 CasAuthenticationFilter
에 의해 인증되는 것입니다 - /j_spring_cas_security_proxyreceptor?pgtIou=PGTIOU-1-pR9r9LVJvB5EkezbMJHN-talenteye.in&pgtId=TGT-2-QXvAHIRciBNR9HU5FOvpOaHcJaBj5OJTUPPz5ZwA7yK1xH54iL-myorg.in
CasAuthenticationFilter
의 requiresAuthentication
은 다음과 같습니다 구현 :
protected boolean requiresAuthentication(final HttpServletRequest request, final HttpServletResponse response) {
final boolean serviceTicketRequest = serviceTicketRequest(request, response);
final boolean result = serviceTicketRequest || proxyReceptorRequest(request) || (proxyTicketRequest(serviceTicketRequest, request));
if(logger.isDebugEnabled()) {
logger.debug("requiresAuthentication = "+result);
}
return result;
}
그리고 로그 말하는 -
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - serviceTicketRequest = false
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - proxyReceptorConfigured = true
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - proxyReceptorRequest = true
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - requiresAuthentication = true
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - Request is to process authentication
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - proxyReceptorConfigured = true
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - proxyReceptorRequest = true
19:23:42.835 [http-bio-8080-exec-8] DEBUG o.s.s.c.web.CasAuthenticationFilter - Responding to proxy receptor request
이 작업을 함께하는 방법에 관해서 혼란스러워합니다. 내가 너무 복잡해 지는지 궁금해. 내가 이미 이틀을 낭비 했으므로 어떤 포인터라도 도움이 될 것입니다.