CAS单点登录

单点登录

什么是单点登录

单点登陆全称Single Sign On(简称SSO),多系统,单一位置登陆,实现多系统同时登陆的一种技术,包括单点登陆与单点注销。

是一种身份认证机制,在一个多系统共存的环境下,用户在一处登陆后,就不用在其他系统中登录,也就是用户的一次登录就得到其他所有系统的信任

:淘宝、天猫

实现单点登录有很多种方案

(1)使用redis实现session共享

(2)使用开源的单点登录系统(CAS)

CAS简介

​ CAS(Central Authentication Service的缩写,中央认证服务器)是耶鲁大学Rechnology and Planning是现实的Shawn Bayern 在2002年除的一个开源系统。刚开始名字叫做Yale CAS。Yale CAS 1.0的目标只是一个单点登录的系统,随着慢慢用开,功能就越来越堵,2.0就提供了多种认证的方式。

​ 2004年12月,CAS转成JASIG(java Administration Special Interseting Group)的一个项目,项目也随着改名为JASIG CAS,这就是为什么现在有些CAS的连接开始有jasig的字样

​ 2012年,JASIG跟Sakai基金会合并,改名为Apereo基金会,所以CAS也随着改名为Apereo CAS。

​ CAS官网:https://www.apereo.org/projects/cas

​ 源码地址:https://github.com/apereo/cas/tree/5.3.x

​ 下载地址:https://repo1.maven.org/maven2/org/apereo/cas/cas-server-webapp-tomcat/5.3.14/

CAS具有一下特点:

​ (1)开源的企业级单点登录解决方案

​ (2)CAS Server为需要独立部署的Web应用

​ (3)CAS Client支持非常多的客户端(这里指单点登录系统中的各个Web应用)

CAS 原理和协议

​ CAS Server 需要独立部署,主要负责对用户的认证工作;

​ CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

图是 CAS 最基本的协议过程:

img

SSO单点登录访问流程主要有一下步骤

​ 1.访问服务:SSO客户端发送请求访问应用系统提供的服务资源

​ 2.定向服务:SSO客户端会重定向用户请求到SSO服务器

​ 3.用户认证:用户身份认证。

​ 4.发放票据:SSO服务器会产生一个随机的ServiceTicket

​ 5.验证票据:SSO服务器验证票据Service Ticke的合法性,验证通过后,允许客户端访问服务。

​ 6.传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端

搭建Tomcat HTTPS支持

http无状态协议,以明文方式发送内容,不提供任何方式的数据加 密

https 在HTTP的基 础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

CAS采用HTTPS协议处理用户请求,所以我们需要配置Tomcat支持HTTPS协议;

​ 我们采用JDK自带的keytool工具生成秘钥库

​ 别名 java1234 存储路径 D:\keys

一、生成密钥库

采用JDK自带的keytool(密钥和证书管理工具)工具生成密钥库

keytool -genkey -v -alias java1234 -keyalg RSA -keystore D:/keys/java1234.keystore

这里需要填写一些信息,注意填写要域名;

秘钥库密码我们用 666666

执行完,会生成一个秘钥库文件;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JTkRafh0-1623851104658)(C:\Users\国强\AppData\Roaming\Typora\typora-user-images\1622600473597.png)]

二、从秘钥库里导出证书

keytool -export -trustcacerts -alias java1234 -file D:/keys/java1234.cer -keystore D:/keys/java1234.keystore

输入第一步的秘钥库密码 666666

即可生成证书

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WSrpYYEB-1623851104659)(C:\Users\国强\AppData\Roaming\Typora\typora-user-images\1622600757980.png)]

三、将证书导入到JDK证书库

keytool -import -trustcacerts -alias java1234 -file D:/keys/java1234.cer -keystore "D:\Java\jdk1.8.0\jre\lib\security/cacerts"

密码:changeit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CWAgkxd2-1623851104661)(C:\Users\国强\AppData\Roaming\Typora\typora-user-images\1622983035674.png)]

删除证书
keytool -delete -alias java1234 -keystore D:\Java\jdk1.8.0\jre\lib\security\cacerts -storepass changeit

下载war包

​ CAS官网:https://www.apereo.org/projects/cas

​ 源码地址:https://github.com/apereo/cas/tree/5.3.x

​ 下载地址:https://repo1.maven.org/maven2/org/apereo/cas/cas-server-webapp-tomcat/5.3.14/

四、tomcat配置http支持

1.修改配置

​ tomcat—conf—server.xml

keystoreFile="这里为文件路径"
keystorePass="这里是文件密码"
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
			   keystoreFile="D:\keys\java1234.keystore"
			   keystorePass="666666"/>
2.修改tomcat9编码格式问题

​ tomcat—conf—loggiing.properties的文件

​ 默认有中文乱码,可以我们来到tomcat目录的conf子目录中,找到一个名为 “logging.properties” 的文件,打开这个文本文件,找到如下配置项

	将 UTF-8 修改为 GBK 

	java.util.logging.ConsoleHandler.encoding = GBK

CAS账号密码为:casuser/Mellon

配置数据源,数据库用户认证

修改application.properties配置文件

注释掉写死的认证用户,加上jdbc数据源配置

# cas.authn.accept.users=casuser::Mellon

# cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQL5Dialect

cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/sso?serverTimezone=GMT
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=root
cas.authn.jdbc.query[0].sql=select username,password from cas where username=?
cas.authn.jdbc.query[0].fieldPassword=password
#指定过期字段 int 类型 1为过期 0 为不过期
cas.authn.jdbc.query[0].fieldExpired=expired
#指定过期字段 int 类型 1为不可用 0为可用
cas.authn.jdbc.query[0].fieldDisabled=disabled
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

加上jdbc驱动包以及支持jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yeIeV9lt-1623851104662)(data:image/png;base64,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)]

密码加密校验

第一步:数据库生成下md5密码

SELECT MD5(‘123456’);

第二步:修改application.properties配置文件

cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#MD5加密策略
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

整合

依赖pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>sso-sys</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>crm-sys</module>
        <module>ft-sys</module>
    </modules>
    <!--编译版本-->
    <properties>
        <!--编码-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!--源码版本-->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!--cas的版本-->
        <cas.version>2.3.0-GA</cas.version>
        <!--spring-boot的版本-->
        <spring-boot.version>2.3.4.RELEASE</spring-boot.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>net.unicon.cas</groupId>
                <artifactId>cas-client-autoconfig-support</artifactId>
                <version>${cas.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
系统pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>sso-sys</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ft-sys</artifactId>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
        <dependency>
            <groupId>net.unicon.cas</groupId>
            <artifactId>cas-client-autoconfig-support</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-cas</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>
    </dependencies>
</project>
application.yml
server:
  port: 8888

cas:
  #cas服务端地址
  server-url-prefix: https://java1234.com:8443/cas
  #服务端登录地址
  server-login-url: https://java1234.com:8443/cas/login
  #登录成功回调的地址
  client-host-url: http://java1234.com:8888
  #cas类型
  validation-type: cas3
首页代码(templates)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ft财务系统</title>
</head>
<body>
<!--从session的_const_cas_assertion_中的principal对象中取出name-->
<!--欢迎:<font th:text="${session._const_cas_assertion_.principal.name}"></font>-->
进入ft财务系统
<br/>
<a href="/logout">退出客户关系</a>
</body>
</html>
登录
//单点登录
@RequestMapping("/crm")
public ModelAndView root(){
    ModelAndView mav = new ModelAndView();
    mav.setViewName("index");
    return mav;
}
spring启动
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableCasClient
public class CrmSysApplication {
    public static void main(String[] arge){
        SpringApplication.run(CrmSysApplication.class,arge);
    }
}

开启@EnableCasClient注释(开启CAS支持)

CAS单点登录报错:未认证授权的服务

在这里插入图片描述

解决办法:

D:\WorkSpace\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes\services

HTTPSandIMAPS-10000001,修改

  "serviceId" : "^(https|http|imaps)://.*",

D:\WorkSpace\apache-tomcat-9.0.46\webapps\cas\WEB-INF\classes

application.properties,添加

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

cas.tgc.secure=false:以本文百度这个为例,设为false的结果就是无论你在哪个协议下的百度页面设cookie,那么两边的百度页面的cookie中都可以看到该字段

cas.serviceRegistry.initFromJson=true:开启json格式service注册

获取用户名:

欢迎:<font th:text="${session._const_cas_assertion_.principal.name}"></font>

注销

//单点注销
@RequestMapping("/logout")
public String loginout(){
    return "redirect:https://java1234.com:8443/cas/logout";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AiLi0617

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值