CAS+springSecurity实现单点登录sso(二)

一、基于CAS服务端实现单点登录原理图:
在这里插入图片描述
当然了:这里的web服务器也不只一台,但是一个用户访问多个web的时候都是这一套流程!!!

二**、在上一篇介绍到搭建的CAS服务器,需要注意一下几点(我入坑很久才出来,注意哦!!!)**
(1)坑一:如果你没有配置域名,直接用ip进行证书认证是会报下边的错的,不使用域名进行证书认证最突出的问题就是SSL握手失败。
在这里插入图片描述
解决:修改的hosts文件配置域名
在这里插入图片描述
在这里插入图片描述
(2)修改CAS项目配置文件,放行http请求
在这里插入图片描述
在这里插入图片描述
(3) 443端口即网页浏览端口,主要是用于HTTPS服务,其他人抓包获取到的是加密数据,保证了安全性,我之前去配置了一个18080,可以改为443这样访问CAS服务的话就可以不加端口号了
在这里插入图片描述
如:
在这里插入图片描述
三、搭建两台web服务器 基本一样 端口号不一样即可
web.xml配置文件:

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

  <!--用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
  <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>


  <!--该过滤器负责用户的认证工作,必须启用-->
  <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服务端-->
      <param-value>https://clement.com/cas/login</param-value>
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <!--你的子程序客户端服务器的IP-->
      <param-value>http://127.0.0.1:18083</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CASFilter</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://clement.com/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://127.0.0.1:18083</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Validation Filter</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>


    <!--第二种:下边的这种也可以获得用户名-->
    <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>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

这个端口号:为你项目发布端口号
在这里插入图片描述

如:我的另一台web站点为18084

在没有认证的情况下:
访问http://127.0.0.1:18083 和http://127.0.0.1:180834 都会跳转到同一的登录页面
在这里插入图片描述
(1)在没有认证的情况下:
访问http://127.0.0.1:18083 和http://127.0.0.1:180834 都会跳转到通一的登录页面(当然,真正的开发中这个默认的登录页面是要自定义的)
(2)在认证的情况下:只要访问http://127.0.0.1:18083 和http://127.0.0.1:180834 认证通过一台,然后再访问另一台的话就可以直接访问,不用重新登录
(3)退出的情况下:访问 https://clement.com/cas/logout 退出成功后,刷新两个web网站则都会再次跳转到登录页面 (当然了,这个退出后跳转的页面也是默认的,实际中也是要修改的)
在这里插入图片描述
PS:下一篇就整合springsecurity了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值