Здесь мы используем Spring-Security и нативный пакет 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-MAPPIN <Url-pattern>/*</url-pattern> </filter-mapping> <delloader> <lisherer-class> org.jasig.cas.client.session.singlesignouthttpsessionListener </stirlicer-class> </sluster>
ApplicationContext-Security.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XMLNS: Security = "http://www.springframework.org/schema/security" xmlns: util = "http://www.springframework.org/schema/util" xsi: schemalocation = "http://wwww.springframe. http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.x.xsd. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd "> <beanced =" casfilterchain "> <prontructor-Arg> <Til: list> <creaters: filter-chaitle = Filters = "SingleSignoutFilter, Cas20ProxyReceiveTicketValidationFilter, AuthenticationFilter, httpservletrequestwrapperfilter, assertionThreadlocalfilter"/> </util: list> </constructor-arg> </bean> <bean id = " id = "cas20proxyreceiveTicketValidationFilter"> <name = "servername" value = "$ {client.url}"/> <name = "ticketvalidator" Ref = "cas2 value = "$ {cas.url}"/> <name = "renew" value = "false"/> </bean> <bean id = "authenticationfilter"> <name = "renew" value = "false"/> <property name = "casserverloginurl" value = "$ {cas.url}"/> <property name = "servername" value = "$ {$ {cas.Url}"/> <> "value" value = "$" </bean> <bean id = "httpservlectrequestwrapperfilter"/> <bean id = "assertionthreadlocalfilter"/> </beans> Характеристики
#CAS Service Adders CAS.URL = https: //cas.example.com: 8443#CAS -адрес клиента - это адрес этого приложения Client.url = http: // localhost: 8080
анализировать
В цепочке фильтров безопасности в ApplicationContext-Security.xml мы используем 5 фильтров, а именно: SingleSignOutfilter, Cas20ProxyReceiveTicketValidationFilter, AuthenticationFilter, httpservlectrequestwrapperfilter и AssertionThreadlocalfilter.
Почему бы не использовать Spring-Security-CAS
весна-безопасность-кас
Ответственным фильтром Validator в Spring-Security-Cas является org.springframework.security.cas.authentication.casauthenticationprovider.
Частная CasauthenticationToken AuthenticAteNow (окончательная аутентификация аутентификации) выбрасывает AuthenticationException {try {окончательное утверждение утверждения = this.ticketValidator.validate (authentication.getCredentials (). toString (), getServiceurl (аутентификация)); ...При построении второго параметра метода валидатора валидатора
Private String getServiceurl (аутентификация аутентификации) {String serviceUrl; if (Authentication.getDetails () exancefulf ServiceAuthenticationDetails) {serviceUrl = ((ServiceAuthenticationDetails) Authentication.getDetails ()). getServiceUrl (); } else if (serviceProperties == null) {throw new allodalStateException ("ServiceProperties не может быть null, если Authentication.getDetails () реализует ServiceAuthenticationDetails."); } else if (serviceProperties.getService () == null) {бросить new allodalStateException ("serviceProperties.getService () не может быть нулевым, если не аутентификация. GetDeTails () реализует ServiceAuthenticationDetails."); } else {serviceUrl = serviceProperties.getService (); } if (logger.isdebugenabled ()) {logger.debug ("serviceUrl ="+serviceUrl); } return serviceUrl;}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.