首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理从cas认证成功到控制器的响应

如何处理从cas认证成功到控制器的响应
EN

Stack Overflow用户
提问于 2014-08-07 11:32:51
回答 1查看 1.8K关注 0票数 0

同时使用CAS在Spring上实现安全性。在来自CAS的身份验证之后,如何在security.xml中设置Spring的响应页面,在从cas创建票证后,我的控制器无法处理请求。

代码语言:javascript
复制
      //  security.xml configuration is ==>
      // This section is used to configure CAS. The service is the actual redirect 
      //    that will be triggered after the CAS login sequence. -->
                <bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
                    <property name="service" value="http://localhost:8086/cluster/request/abcd/"></property>
                    <property name="sendRenew" value="false"></property>
                </bean>

        // and my controller handling the request from abcd 
        @RequestMapping(value = "/abcd", method = RequestMethod.GET)
            public String dashboard(Model model) {
        }

    web.xml is 

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>socialcluster</display-name>


        <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext-security.xml</param-value>
      </context-param>

      <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
      </filter>
     <!--  -->
      <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/social/*</url-pattern>
      </filter-mapping>


      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>


<servlet>
            <servlet-name>springsocial</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>springsocial</servlet-name>
            <url-pattern>/social/*</url-pattern>
        </servlet-mapping>

      <session-config>
        <session-timeout>1</session-timeout>
      </session-config>
     </web-app>

//我的security.xml是

代码语言:javascript
复制
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:security="http://www.springframework.org/schema/security" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/security
  http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    //Enable security, let the casAuthenticationEntryPoint handle all intercepted 
    //  urls. The CAS_FILTER needs to be in the right position within the filter 
    //  chain. -->

    <security:global-method-security
        secured-annotations="enabled">
    </security:global-method-security>

    <security:http entry-point-ref="casAuthenticationEntryPoint"
        auto-config="true">
        <security:intercept-url pattern="/**" access="ROLE_USER"></security:intercept-url>
        <security:custom-filter position="CAS_FILTER"
            ref="casAuthenticationFilter"></security:custom-filter>

    </security:http>

    // Required for the casProcessingFilter, so define it explicitly set and 
    //specify an Id Even though the authenticationManager is created by default 
    //when namespace based config is used. -->
    <security:authentication-manager alias="authenticationManager">
        <security:authentication-provider
            ref="casAuthenticationProvider"></security:authentication-provider>
    </security:authentication-manager>

    <!-- This section is used to configure CAS. The service is the actual redirect 
        that will be triggered after the CAS login sequence. -->
    <bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
        <property name="service" value="http://localhost:8080/socialcluster/social/dashboard/"></property>
        <property name="sendRenew" value="false"></property>
    </bean>

    <bean id="authenticationSuccessHandler"  class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
        <property name="defaultTargetUrl" value="http://localhost:8080/home.do" />
    </bean>

<!--    //value="http://localhost:8080/spring-security-cas/j_spring_cas_security_check"></property> -->
    <!-- The CAS filter handles the redirect from the CAS server and starts 
        the ticket validation. -->


    <bean id="casAuthenticationFilter"
        class="org.springframework.security.cas.web.CasAuthenticationFilter">
        <property name="authenticationManager" ref="authenticationManager"></property>
    </bean>

    //The entryPoint intercepts all the CAS authentication requests. It redirects 
    //  to the CAS loginUrl for the CAS login page. -->
    <bean id="casAuthenticationEntryPoint"
        class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">
        <property name="loginUrl"
            value="https://login.example.com/cas/login"></property>
        <property name="serviceProperties" ref="serviceProperties"></property>
    </bean>

    <!-- Handles the CAS ticket processing. -->
    <bean id="casAuthenticationProvider"
        class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
        <property name="userDetailsService" ref="userService"></property>
        <property name="serviceProperties" ref="serviceProperties"></property>
        <property name="ticketValidator">
            <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
                <constructor-arg index="0"
                    value="https://login.example.com/cas"></constructor-arg>
            </bean>
        </property>
        <property name="key" value="cas"></property>
    </bean>

    <bean id="casSingleSignOutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter"/>

    // Invoked when the user clicks logout -->

     // logout session menamagement uncomments -->

    <bean id="logoutFilter" class="org.springframework.security.ui.logout.LogoutFilter">
        //logout  URL redirected to after logout success 
        <constructor-arg value="https://localhost:5543/cas/logout"/>
        <constructor-arg>
            <list>
                <bean class="org.springframework.security.ui.logout.SecurityContextLogoutHandler">
                    <property name="invalidateHttpSession" value="false"/>
                </bean>
            </list>
        </constructor-arg>
    </bean>
     -->

    // The users available for this application. -->
    <security:user-service id="userService">
        <security:user name="user" password="user" authorities="ROLE_USER"></security:user>
    </security:user-service>

编辑:我的控制器无法识别请求

错误为这个网页有一个重定向循环

1.)更改什么使我的控制器能够识别请求。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25181455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档