美文网首页
CAS5.3单点登录服务端搭建与整合springboot

CAS5.3单点登录服务端搭建与整合springboot

作者: 不给起这个名字 | 来源:发表于2018-11-23 23:29 被阅读0次

    什么是单点登录
    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
    SSO是概念,实现SSO需要用到CAS框架

    使用cas框架实现单点登陆
    有多个不同服务器的web层需要登陆。就要使用cas。在一个web层页面登录,其他页面都不需要登录就能访问
    www.taobao.com car.taobao.com。 只需要在登陆中心(cas服务端)登录一次就能访问全部不同服务器的页面

    image.png

    CAS
    是开源的企业级单点登陆解决方案
    CAS Server是独立部署的web应用,下载下来用包war复制到tomcat启动,CAS项目中配置文件设置了tomcat的端口是8080。自行修改,默认是Https协议,开发时要关闭Https认证协议


    image.png

    CAS Client(自己的web项目)支持非常多的客户端(这里指单点登录系统中的各个Web应用),包括Java,PHP等

    CAS包含两个部分:CAS Server和CAS Client,
    CAS Server需要独立部署,主要负责对用户的认证工作;
    CAS Client负责处理对客户端受保护资源的访问请求,需要登陆时,重定向到CAS Server

    第四步会其实会经过浏览器再跳转到CAS Client
    SSO单点登录访问流程:
    1.访问服务:SSO客户端发送请求访问应用系统提供的服务资源
    2.定向认证:SSO客户端会重定向用户请求到SSO服务器
    3.用户认证:用户身份认证
    4.发放票据:SSO服务器会产生一个随机的Service Ticket
    5.验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务
    6.传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端

    搭建CSA服务器

    Cas服务端其实就是一个war包,
    到官方下载https://www.apereo.org/projects/cas/download-cas,这里下载的是war包,但是是2016年的4.x版本,
    上面网址给需要直接下载war的人用

    我们想找较新的版本,但是新版本已经不提供war,需要自己来打成war包,这里下载5.x的新版本
    https://github.com/apereo/cas-overlay-template下载5.3分支

    image.png

    解压后进行目录,build一下项目 ,过程有点慢,耐心等待

    image.png
    image.png
    image.png
    多了一个target文件夹
    image.png
    点入文件夹
    image.png
    把cas.war放到tomcat的webapp中,启动tomcat
    访问http://localhost:8080/cas
    image.png
    启动成功
    image.png
    默认用户名和密码cas\WEB-INF\classes\application.properties
    image.png

    用户名:casuser 密码:Mellon

    image.png
    CAS服务端启动成功

    去除https认证
    CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的机构申请和购买) 。如果对安全要求不高或是在开发测试阶段,可使用HTTP协议。我们这里讲解通过修改配置,让CAS使用HTTP协议。

    如果不去除https认证下面整合客户端时会出现未认证授权的服务

    image.png
    修改CAS服务端配置文件
    cas\WEB-INF\classes目录的application,properties添加如下的内容
    cas.tgc.secure=false
    cas.serviceRegistry.initFromJson=true
    cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json
    修改内容如下,即添加http
    "serviceId" : "^(https|http|imaps)://.*",

    CAS客户端配置(就是自己项目)

    pom.xml依赖

    <dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.1.0-GA</version>
    </dependency>

    application.properties配置文件
    客户端1
    server.port=8088
    #cas服务端的地址
    cas.server-url-prefix=http://localhost:8080/cas
    #cas服务端的登录地址
    cas.server-login-url=http://localhost:8080/cas/login
    #当前服务器的地址(客户端)
    cas.client-host-url=http://localhost:8088
    #Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
    cas.validation-type=CAS3

    每个客户端只要修改当前服务器地址就行了
    如客户端2
    server.port=8090
    #cas服务端的地址
    cas.server-url-prefix=http://localhost:8080/cas
    #cas服务端的登录地址
    cas.server-login-url=http://localhost:8080/cas/login
    #当前服务器的地址(客户端)
    cas.client-host-url=http://localhost:8090
    #Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
    cas.validation-type=CAS3

    配置完成
    没有登陆时http://localhost:8088http://localhost:8090访问都会跳到CAS 登陆页
    只要客户端1登陆了,登陆端2就能直接访问,反之也能访问

    上面是通过CAS默认的用户名和密码进行登录的,实际项目中我们的用户名和密码肯定是从数据库中获取到的
    官方文档https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html
    接下来我们就看一下怎么通过获取数据库的用户进行验证
    配置CAS服务端
    G:\google下载\cas-overlay-template-5.3的pox.xml来打开项目
    pom.xml文件加上依赖
    <dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc-drivers</artifactId>
    <version>5.3.6</version>
    </dependency>
    <dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>5.3.6</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
    </dependency>
    cmd进入命令 mvn clean package命令的时候会重新生成一个war包
    把war放到tomcat中解压
    cas\WEB-INF\classes目录的application.properties
    首先注释掉默认的用户#cas.authn.accept.users=casuser::Mellon
    添加如下的内容
    cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=utf-8&useSSL=true
    cas.authn.jdbc.query[0].user=root
    cas.authn.jdbc.query[0].password=a1234567
    cas.authn.jdbc.query[0].sql=select * from user where username=?
    cas.authn.jdbc.query[0].fieldPassword=password
    cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

    需要加上之前去掉https的配置

    **注意 mysql6.0以上版本配置有些不同 参考
    cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=utf-8&useSSL=true&autoReconnect=true&failOverReadOnly=false&autoReconnect=true&serverTimezone=UTC
    cas.authn.jdbc.query[0].user=root
    cas.authn.jdbc.query[0].password=a1234567
    cas.authn.jdbc.query[0].sql=select * from user where username=?
    cas.authn.jdbc.query[0].fieldPassword=password
    cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver

    相关文章

      网友评论

          本文标题:CAS5.3单点登录服务端搭建与整合springboot

          本文链接:https://www.haomeiwen.com/subject/ubrsqqtx.html