SSO单点登录-客户端搭建

/ 单点登录 / 没有评论 / 2360浏览

本地搭建两个客户端

打开开发工具idea,创建两个maven项目名称分别为:clientOne、clientTwo;默认创建一个maven web app 因为是测试应用暂且只需要修改web.xml。方法如下:

idea创建maven web app 命名为clientOne

该clientOne对于之前篇幅中说的client1.huzd.com

pom.xml 中加入cas sso client 的jar坐标

    <dependency>
      <groupId>org.jasig.cas</groupId>
      <version>3.1.1</version>
      <artifactId>cas-client-core</artifactId>
    </dependency>

修改web.xml,代码如下:


  <listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
  </listener>

  <!-- 该过滤器用于实现单点登出功能,可选配置。 -->
  <filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


  <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
  <filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
    <init-param>
      <param-name>casServerUrlPrefix</param-name>
      <param-value>https://server.huzd.com:8443/cas-server</param-value>
      <!-- 此处必须为登录url/cas-server/,带有任何其它路径都会报错,如“https://server.huzd.com:8443/cas-server/login”,这样也会报错。根据代码调试过程可以断定,这里的url是client和server通讯时用来拼凑ticket校验URL路径的。 -->
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <!--这里注意url 的路径,server.huzd.com 在host文件中配置对应的127.0.0.1 端口号一定要与启动Tomcat服务器的端口一致,一般cas server 服务器单独部署,-->
      <param-value>http://client1.huzd.com:8888</param-value>
    </init-param>
    <init-param>
      <param-name>redirectAfterValidation</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>




  <!-- 该过滤器负责用户的认证工作,必须启用它 -->
  <filter>
    <filter-name>CASFilter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
      <param-name>casServerLoginUrl</param-name>
      <!--这里是搭建的 cas server 服务端的IP;对于未登录的用户跳转到如下地址进行认证-->
      <param-value>https://server.huzd.com:8443/cas-server/login</param-value>
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <param-value>http://client1.huzd.com:8888</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CASFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>



  <!--
          该过滤器负责实现HttpServletRequest请求的包裹,
          比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
  -->
  <filter>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <filter-class>
      org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!--
          该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
          比如AssertionHolder.getAssertion().getPrincipal().getName()。
  -->
  <filter>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

创建第二个客户端web应用;名称为clientTwo 过程类似shan上述步骤 1 2 3 ,注意域名要映射对;第二个客户端对于 client2.huzd.com

接下来就可以愉快的测试了。