여기서는 스프링 보안과 기본 Jasig CAS 패키지를 통합하기 위해 사용합니다. Spring-Security-CAS가 Spring에서 직접 사용하지 않는 이유는 무엇입니까? 나중에 설명 될 것입니다.
구성
web.xml
<filter> <filter-name> casfilterchain </filter-name> <filter-class> org.springframework.web.filter.delegatingfilterproxy </filter-class> </filter> <filter-mapping> <filter-name> casfilterchain </filter-name> <Url-pattern>/*</url-pattern> </filter-mapping> <layer> <layer-class> org.jasig.cas.client.session.singlesignouthttpsessionListener </laiseer-class> </larleser>
ApplicationContext-security.xml
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : 보안 = "http://www.springframework.org/schema/security"xmlns : util = "http://www.springframework.org/schema/util"xsi : schemalocation = "http://www.springframwork.org/schema/schema/springwork.org/schema/schemas http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.spramework.org/schema/schema/security/springecurity-3.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd "> <bean id ="casfilterchain "> <constructor-arg> <util : <shins insinest : filter-chain pattern ="/** "" "" "" "" "" " cas20ProxyReceiveTicketValidationFilter, AuthenticationFilter, httpservletrequestWrapperFilter, AssertionThreadloCalfilter "/> </util : list> </constructor-arg> </bean> <bean id ="SingleSignoutFilter "/> <bean id ="a bean id = "<a beal proxyeiceivetouceivetouceivetvalitfilfalidfalfilfalfilfalfilfalfalfilfalfalfilfalfalitefilter 이름 = "servername"value = "$ {client.url}"/> <속성 이름 = "ticketValidator"ref = "cas20ServiceticketValidator"/> </bean> <bean id = "cas20ServiceticketValidator"> <constructor-arg value = "$ {cas.url}"/<bank ""value = "" "/> <ban" id = "AuthenticationFilter"> <속성 이름 = "Renew"value = "false"/> <속성 "이름 ="CasserverLoginUrl "value ="$ {cas.url} "/> <속성 이름 ="servername "value ="$ {client.url} "/> </bean> <bean id ="httpsverquestwrapperfipperfilter "/>>>>>>>>>>>>>>>>>>>>>>>>>>>> 넣습니다. id = "Assertionthreadlocalfilter"/> </beans> 속성
#CAS 서비스 주소 cas.url = https : //cas.example.com : 8443#CAS 클라이언트 주소는이 응용 프로그램의 주소입니다. url = http : // localhost : 8080
분석
ApplicationContext-security.xml의 보안 필터 체인에서 5 개의 필터, 즉 SinglesignoutFilter, Cas20ProxyReceiveTicketValidationFilter, AuthenticationFilter, httpservletRequestWrapperFilter 및 AssertionThreadLocalfilter를 사용합니다.
스프링 보안 카스를 사용하지 않겠습니까?
스프링 보안 카스
Spring-Security-CAS의 책임있는 티켓 유효성 검사기 필터는 org.springframework.security.cas.authentication.casauthenticationprovider입니다.
Private CasauthenticationToken Authenticatenow (최종 인증 인증)는 AuthenticationException {try {최종 어시스트 어제 = this.ticketValidator.validate (authentication.getCredentials (). toString (), getServiceUrl (authentication)); ...유효성 검사기 메소드의 두 번째 매개 변수를 구축 할 때
개인 문자열 GetServiceUrl (인증 인증) {String ServiceUrl; if (authentication.getDetails () serviceauthenticationDetails의 인스턴스) {serviceUrl = ((serviceauthenticationDetails) augentication.getDetails ()). getServiceUrl (); } else if (serviceProperties == null) {wrach new 불법 스테이트 exception ( "serviceProperties는 authentication.getDetails ()을 구현하지 않으면 null이 될 수 없습니다."); } else if (serviceProperties.getService () == NULL) {wrach new new OregalStateException ( "serviceProperties.getService ()는 authentication.getDetails ()를 구현하지 않으면 null이 될 수 없습니다."); } else {serviceUrl = serviceProperties.getService (); } if (logger.isdebugenabled ()) {logger.debug ( "serviceUrl ="+serviceUrl); } return serviceUrl;}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.