CAS(三)基于SpringMVC搭建CAS-client,SpringMVC搭建CAS客户端

梦里梦外; 2022-04-15 03:46 982阅读 0赞

环境要求

  • JDK 8+
  • CAS 5.2
  • tomcat 8+

步骤

一、搭建CAS服务器 —> CAS(一)搭建CAS - server服务器

二、配置hosts,加入如下配置

  1. 127.0.0.1 cas.server.com
  2. 127.0.0.1 cas.client1.com

三、搭建SpringMVC项目

项目名为cas-clientA,项目结构如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L291bXV2_size_16_color_FFFFFF_t_70

  • 包含三个页面:主页—index.jsp(无需登录),hello页面—hello.jsp(需要登录),退出成功提示页—logoutsuccess.jsp(无需登录)
  • pom.xml文件配置如下

    <?xml version=”1.0” encoding=”UTF-8”?>


    4.0.0

    com.oumuv
    cas-clientA
    0.0.1-SNAPSHOT
    war

    cas-clientA
    cas client A




    javax
    javaee-web-api
    7.0


    org.springframework
    spring-core
    4.3.9.RELEASE


    org.springframework
    spring-webmvc
    4.3.9.RELEASE



    commons-logging
    commons-logging
    1.1.1



    log4j
    log4j
    1.2.17




    org.jasig.cas.client
    cas-client-core
    3.4.1




    cas-sample-java-webapp



    org.apache.maven.plugins
    maven-compiler-plugin
    3.0

    UTF-8
    1.8
    1.8



    org.mortbay.jetty
    jetty-maven-plugin
    8.1.9.v20130131




    9001
    60000







  • applicationContext.xml主要配置一下jsp解析器,配置如下:

    <?xml version=”1.0” encoding=”UTF-8”?>

















  • web.xml配置是重点,cas服务器和客户端的关联需要在此配置:

    <?xml version=”1.0” encoding=”UTF-8”?>

    1. <context-param>
    2. <param-name>contextConfigLocation</param-name>
    3. <param-value>classpath:*.xml</param-value>
    4. </context-param>
    5. <context-param>
    6. <param-name>log4jConfigLocation</param-name>
    7. <param-value>classpath:log4j.properties</param-value>
    8. </context-param>
    9. <!-- 上下问监听器 -->
    10. <listener>
    11. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    12. </listener>
    13. <listener>
    14. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    15. </listener>
    16. <!-- springMVC -->
    17. <servlet>
    18. <servlet-name>SpringMVC</servlet-name>
    19. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    20. <init-param>
    21. <param-name>contextConfigLocation</param-name>
    22. <param-value>classpath:applicationContext.xml</param-value>
    23. </init-param>
    24. <load-on-startup>1</load-on-startup>
    25. </servlet>
    26. <servlet-mapping>
    27. <servlet-name>SpringMVC</servlet-name>
    28. <url-pattern>/</url-pattern>
    29. </servlet-mapping>
    30. <!--登出过滤器-->
    31. <filter>
    32. <filter-name>CAS Single Sign Out Filter</filter-name>
    33. <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    34. <init-param>
    35. <param-name>casServerUrlPrefix</param-name>
    36. <param-value>http://cas.server.com:8443/cas</param-value>
    37. </init-param>
    38. </filter>
    39. <!--登出监听器-->
    40. <listener>
    41. <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    42. </listener>
    43. <!--认证过滤器-->
    44. <filter>
    45. <filter-name>CAS Authentication Filter</filter-name>
    46. <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    47. <init-param>
    48. <param-name>casServerLoginUrl</param-name>
    49. <param-value>http://cas.server.com:8443/cas/login</param-value>
    50. </init-param>
    51. <init-param>
    52. <param-name>serverName</param-name>
    53. <param-value>http://cas.client1.com:9001</param-value>
    54. </init-param>
    55. <!--忽略验证的url,多个url使用"|"分割-->
    56. <init-param>
    57. <param-name>ignorePattern</param-name>
    58. <param-value>/logout/success|/index</param-value>
    59. </init-param>
    60. </filter>
    61. <!--ticke验证过滤器-->
    62. <filter>
    63. <filter-name>CAS Validation Filter</filter-name>
    64. <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>
    65. <init-param>
    66. <param-name>casServerUrlPrefix</param-name>
    67. <param-value>http://cas.server.com:8443/cas</param-value>
    68. </init-param>
    69. <init-param>
    70. <param-name>serverName</param-name>
    71. <param-value>http://cas.client1.com:9001</param-value>
    72. </init-param>
    73. <init-param>
    74. <param-name>redirectAfterValidation</param-name>
    75. <param-value>true</param-value>
    76. </init-param>
    77. <init-param>
    78. <param-name>useSession</param-name>
    79. <param-value>true</param-value>
    80. </init-param>
    81. <init-param>
    82. <param-name>authn_method</param-name>
    83. <param-value>mfa-duo</param-value>
    84. </init-param>
    85. </filter>
    86. <!--wrapper过滤器-->
    87. <filter>
    88. <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    89. <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    90. </filter>
    91. <filter-mapping>
    92. <filter-name>CAS Single Sign Out Filter</filter-name>
    93. <url-pattern>/*</url-pattern>
    94. </filter-mapping>
    95. <filter-mapping>
    96. <filter-name>CAS Validation Filter</filter-name>
    97. <url-pattern>/*</url-pattern>
    98. </filter-mapping>
    99. <filter-mapping>
    100. <filter-name>CAS Authentication Filter</filter-name>
    101. <url-pattern>/*</url-pattern>
    102. </filter-mapping>
    103. <filter-mapping>
    104. <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    105. <url-pattern>/*</url-pattern>
    106. </filter-mapping>
    107. <!-- 静态文件处理 -->
    108. <servlet-mapping>
    109. <servlet-name>default</servlet-name>
    110. <url-pattern>*.jpg</url-pattern>
    111. </servlet-mapping>
    112. <servlet-mapping>
    113. <servlet-name>default</servlet-name>
    114. <url-pattern>*.js</url-pattern>
    115. </servlet-mapping>
    116. <servlet-mapping>
    117. <servlet-name>default</servlet-name>
    118. <url-pattern>*.css</url-pattern>
    119. </servlet-mapping>

其中http://cas.server.com:8443是服务端的地址,http://cas.client1.com:9001是客户端地址

  • CASController.java有两个业务如下:

    /**

    1. * 主页
    2. * @param map
    3. * @return
    4. */
    5. @RequestMapping("index")
    6. public String index(ModelMap map) {
    7. map.addAttribute("name", "clien A");
    8. return "index";
    9. }
    10. /**
    11. * hello
    12. * @return
    13. */
    14. @RequestMapping("hello")
    15. public String hello() {
    16. return "hello";
    17. }

四、启动项目、测试

依次启动CAS-server服务端、CAS-clientA客户端

访问http://cas.client1.com:9001/index进入CAS-clientA主页:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L291bXV2_size_16_color_FFFFFF_t_70 1

点击client A(http://cas.client1.com:9001/hello),会跳转到cas登录认证页面:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L291bXV2_size_16_color_FFFFFF_t_70 2

输入账号和密码完成登录后跳转到hello页面:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L291bXV2_size_16_color_FFFFFF_t_70 3

到此项目搭建完成

单点退出实现请看这里:CAS(五)CAS客户端单点退出实现

代码托管在https://gitee.com/oumuv/cas-Demo

上一篇:CAS(二)CAS服务器动态验证,CAS使用MySQL数据库验证

下一篇:CAS(四)基于Springboot搭建CAS-client,Springboot搭建CAS客户端

希望可以帮助到有需要的人

发表评论

表情:
评论列表 (有 0 条评论,982人围观)

还没有评论,来说两句吧...

相关阅读

    相关 cas客户

    今天大哥,就给了一个cas认证的包,和 一个cas证书 > 和一个 大片 web。xml 配置的 文档, > 让我部署到服务器上面 添加 cas 认证的包 ...