CAS实现单点登录解决方案

1、什么是CAS

是个一站式单点登录解决方案的软件系统,也是用Spring开发的。(其实有点像Jenkins 做好的一款软件)
有趣的是它丑陋的界面是可以定制的,数据源也是,默认账号密码在xml配置中,也可以切到数据库。

2、结构图

image.png

简说:角色说明、CAS Client客户端(比如说我们写的项目模块,eg:登录模块,购物车模块)
Web Browser 浏览器(也就是用户)
CAS Server 服务端 (类似于分布式架构的注册中心,这里是认证中心服务端)
1、用户通过浏览器发起请求到 CAS Client (某个登录模块),
2、此模块再一次请求重定向到 CAS Server
3、浏览器提交认证信息到 CAS server,CAS server 则返回正确信息或者错误信息
4、一旦认证成功后CAS Server 就将票据 传送给浏览器,浏览器在访问的时候带着票据(token)过去的
5、CAS Client 带着 访问票据 去 CAS Server 认证
6、返回认证用户的信息

3、CAS 服务端部署和配置

(1)安装,看过不少教程使用war包,下载太慢,CSDN沙雕还设置积分
于是找到时候模板解决,个人选择的是5.3(Springboot) ,4.2(Spring-xml)
下载:https://github.com/apereo/cas-overlay-template/tree/5.3
参考:https://www.cnblogs.com/dw039/p/9869737.html
附:默认
登录账号:casuser
密码:Mellon
(2)配置:账号密码(xml),暂未引入mysql存储

5.3采用了Sprngboot配置


image.png

image.png

4.2采用Spring-xml配置


image.png

(3)端口设置:
<1>先修改,tomcat 端口配置(server.xml)

image.png

<2>在修改cas 服务端端口设置
5.2版本

image.png

4.2版本

image.png

image.png

(4)去除 HTTPS协议认证(开发过程中去除)

简单描述:因为默认是开启 HTTPS协议,你可以伪造(作用于开发),或者购买SSL证书,
但是开发没必要浪费时间和金钱。----实际项目部署可加入,可不加,看需求

5.2:默认关闭的

image.png

image.png

4.2:requireSecure="false"

修改第一个:


image.png

修改第二个:


image.png

image.png

修改第三个:
image.png

image.png

(5)跑个demo (原生)
<1>引入相关依赖

   
    
      org.jasig.cas.client
      cas-client-core
      3.6.1
    

    
      javax.servlet
      servlet-api
      2.5
    

<2>web.xml 配置:具体贴在底部

1、第一个过滤器,配置了登出(可选)
2、第二个过滤器,配置 CAS 服务器地址,CAS 客户端地址(当前应用地址)(必选)
3、第三个过滤器,票据认证的配置,和第二个一样配置,就是重复而已(必选)
4、第四个过滤器,封装 HttpServletRequest封装,让他可以获取 SSO登录用户名,详细看配置描述(可选)
5、第五个过滤器,和第四个差不多

4、跑一个demo

注:5.X版本之后要配置的(开启http)

image.png

image.png

这边需要注意的是,这两行配置不是修改,而是添加(没有的自己加进去)
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
image.png

案例设计思路

1、准备两个demo,一个9001,一个9002,前提是 CAS服务端9090已经搭起来了
2、配置好 ,web.xml ,以及引入依赖确定完毕后
3、写上两个 demo 主页


image.png

image.png

5、登出后重定向跳转配置

方式一:
4X版本:

image.png

image.png

5X版本: cas.logout.followServiceRedirects=true

image.png

image.png

跳转方式一: URL指定 传参


image.png

方式二: a标签点击


image.png

6、数据源配置

4X版本:引入三个依赖(连接池,驱动包,cas客户端和jdbc连接依赖)--注:是放在cas 服务端,
注入三个bean,然后替换 下的第二个entity(默认配置的处理器)

image.png

image.png

image.png

image.png

5X版本:暂无。。
(2)注释掉静态的默认账号密码

image.png

集成SpringSecurity (更便捷)

1、

7、修改单点登录默认界面为 需要的项目界面

4X版本:
image.png

web.xml配置参考(作者本人配置了N次,参考了不少文章,4X和5X不同版本不同坑。。)




    
        index.jsp
    

    
        org.jasig.cas.client.session.SingleSignOutHttpSessionListener
    

    

    
    
        CAS Single Sign Out Filter
        org.jasig.cas.client.session.SingleSignOutFilter
    
    
        CAS Single Sign Out Filter
        /*
    
    


    
    
        CASFilter
        org.jasig.cas.client.authentication.AuthenticationFilter
        
            casServerLoginUrl
            
            
            http://127.0.0.1:9090/cas/login
        
        
            serverName
            
            
            http://127.0.0.1:9001
        
    
    
        CASFilter
        /*
    

    
    
        CAS Validation Filter
        org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
        
            casServerUrlPrefix
            
            http://127.0.0.1:9090/cas
        
        
            serverName
            
            http://127.0.0.1:9001
        
        
            
            
        
        
            
            
        
    
    
        CAS Validation Filter
        /*
    

    
    
        CAS HttpServletRequest Wrapper Filter
        org.jasig.cas.client.util.HttpServletRequestWrapperFilter
    
    
        CAS HttpServletRequest Wrapper Filter
        /*
    

    
    
        CAS Assertion Thread Local Filter
        org.jasig.cas.client.util.AssertionThreadLocalFilter
    
    
        CAS Assertion Thread Local Filter
        /*
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    




参考:

https://blog.csdn.net/misseel/article/details/80742331
https://www.cnblogs.com/tjudzj/p/10187626.html
https://blog.csdn.net/weixin_39206782/article/details/80871059
https://www.freesion.com/article/8976172318/

你可能感兴趣的:(CAS实现单点登录解决方案)