单点登录CAS实现_cas单点登录

  1. 联合身份验证:许多企业需要与其他企业共享资源,例如供应链合作伙伴和客户。使用单点登录技术,这些企业可以实现联合身份验证,从而提高安全性和便利性。

五、单点登录的安全性考虑

单点登录技术可以提高安全性,但也需要考虑一些安全性问题,例如:

  1. 身份提供者的安全性:身份提供者可能成为攻击者的目标,因为它存储了用户的身份验证信息。因此,身份提供者必须采取适当的安全措施,例如加密和访问控制,以保护用户的身份验证信息。

  2. 令牌的安全性:令牌可能被攻击者窃取或篡改。因此,令牌必须采取一定的安全措施来保护其安全性,例如加密、签名、防伪标记等。此外,令牌的使用也需要遵循一定的安全规范,例如不要在不安全的网络环境下使用令牌,不要将令牌泄露给他人等。如果令牌被窃取或篡改,应及时采取措施,例如撤销令牌、更改密码等,以保护用户的安全。

以下是单点登录的认证过程:

  1. 用户访问应用A,应用A检测到用户未登录,将用户重定向到认证中心。
  2. 用户在认证中心输入用户名和密码进行认证。
  3. 认证中心验证用户身份,如果验证通过,生成一个令牌(Token)。
  4. 认证中心将令牌返回给应用A。
  5. 应用A将令牌发送给应用B。
  6. 应用B将令牌发送给认证中心进行验证。
  7. 认证中心验证令牌,如果验证通过,返回一个授权令牌(Access Token)。
  8. 应用B使用授权令牌访问认证中心获取用户信息。
  9. 认证中心返回用户信息给应用B。
  10. 应用B使用用户信息完成用户登录。

用户登录成功之后,会与SSO认证中心及各个子系统建立会话,用户与SSO认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过SSO认证中心,全局会话与局部会话有如下约束关系:

局部会话存在,全局会话一定存在 全局会话存在,局部会话不一定存在 全局会话销毁,局部会话必须销毁

  • 首先用户访问系统1受保护的资源,系统1发现未登陆,跳转至SSO认证中心,并将自己的参数传递过去
  • SSO认证中心发现用户未登录,将用户引导至登录页面
  • 用户输入用户名和密码提交至SSO认证中心
  • SSO认证中心校验用户信息,创建用户与SSO认证中心之间的会话,称为全局会话,同时创建授权令牌
  • SSO认证中心带着令牌跳转会最初的请求地址(系统1)
  • 系统1拿到令牌,去SSO认证中心校验令牌是否有效
  • SSO认证中心校验令牌,返回有效,注册系统1的地址
  • 系统1使用该令牌创建与用户的会话,称为局部会话,返回给用户受保护资源
  • 用户访问系统2受保护的资源
  • 系统2发现用户未登录,跳转至SSO认证中心,并将自己的地址作为参数传递过去
  • SSO认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
  • 系统2拿到令牌,去SSO认证中心校验令牌是否有效
  • SSO认证中心校验令牌,返回有效,注册系统2地址
  • 系统2使用该令牌创建与用户的局部会话,返回给用户受保护资源

单点登录的实现方案: 1.cookie+redis 把用户的id,ip为key,及用户账号密码数据信息为value存放在redis中; 把用户凭证存放在cookie里,用户登录系统后,返回一个加密的cookie,然后用户访问其他系统时带上这个cookie,与sso认证中心校验,通过验证后登录 2、session广播 用户登录其中一个系统时,系统服务器会将用户登录的信息复制到另一个系统服务器中,当用户登录另一个系统时,服务器查看是否已有用户信息,如果有就会直接进行登录 3、token 用jwt生成字符串,把用户信息保存到字符串里,通过cookie或地址栏方式返回前端,前端把收到的token存放在请求中或url地址里,每次请求就可以携带token进行请求,访问其他系统时,在地址栏或者请求头里面获取token,根据字符串获取用户信息,可以把token放在redis中设置有效期

代码实现

1 Tomcat HTTPS支持

注意: 生成密钥库的时候要填的名字姓氏,一定要填域名。

# 1 生成密钥库
	1)d盘下面建一个文件夹cas,文件夹下面再建一个文件夹keystore(存放证书的地方)
	2)keytool -genkey -v -alias laohan -keyalg RSA -keystore D:\cas\keystore\laohan.keystore 
	输入口令(随便输,自己记得就行)
# 2 从密钥库导出证书
	keytool -export -trustcacerts -alias laohan -file D:/cas/keystore/laohan.cer -keystore D:/cas/keystore/laohan.keystore
# 3 将证书导入到JDK证书库
	keytool -import -trustcacerts -alias laohan -file D:/cas/keystore/laohan.cer -keystore "D:\java\jdk8\jre\lib\security\cacerts"
	密码:laohan
# 4 查看证书列表:
	keytool -list -keystore "D:\java\jdk8\jre\lib\security\cacerts"
# 5 删除证书
	keytool -delete -alias laohan -keystore "D:\java\jdk8\jre\lib\security\cacerts"

2 tomcat配置https支持
  • 打开tomcat下的conf下的server.xml文件然后放进去保存,协议 最大线程 开启ssl
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"  
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
			   keystoreFile="D:\cas\keystore\laohan.keystore"
			   keystorePass="laohan"/>
  • 乱码 conf 找 logging.properties 文件 找到下面配置修改,把UTF-8改为下面的GBK
 java.util.logging.ConsoleHandler.encoding = GBK
  • 下载war包,放到tomcat/webapp目录下,修改war包名字为cas.war

  • 修改用户名和密码
D:\devlop\apache-tomcat-cas\webapps\cas\WEB-INF\classes    如果没有,先启动一下tomcat

找这个文件
application.properties

打开最后一行有用户名密码
cas.authn.accept.users=casuser::Mellon

https://localhost:8443/cas/login

3 支持数据库密码
D:\devlop\apache-tomcat-cas\webapps\cas\WEB-INF\classes    

找这个文件
application.properties

cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=root
cas.authn.jdbc.query[0].sql=select * from t_cas where username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver

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

D:\devlop\apache-tomcat-cas\webapps\cas\WEB-INF\lib下放入以下包

4 数据库配置 t_cas

CREATE TABLE `t_cas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
4 支持http

D:\devlop\apache-tomcat-cas\webapps\cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

增加http “serviceId” : “^(https|http|imaps)😕/.*”,

4 Springboot整合

1 导入依赖
<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.3.0-GA</version>
</dependency>

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

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-cas</artifactId>
</dependency>

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2 application.yml
server:
  port: 7777
cas:
  #  cas服务端地址
  server-url-prefix: https://www.laohan.com:8443/cas
  # 没有带票据或者票据过期,定义的就是服务端的登录地址
  server-login-url: https://www.laohan.com:8443/cas/login
  #  登录成功后回调的地址
  client-host-url: http://www.laohan.com:8888
  #  类型
  validation-type: cas3
3 前端页面
<!DOCTYPE html>
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/c8518ba625ad9a5ae57512c63790cc3a.png)

![img](https://img-blog.csdnimg.cn/img_convert/66e2431b44761ca588059f74f846a687.png)

![img](https://img-blog.csdnimg.cn/img_convert/3d3ce19ac924c33c00104ead61ffde6c.png)

![img](https://img-blog.csdnimg.cn/img_convert/22d21190d28fd01c962c7dce23514c19.png)

![img](https://img-blog.csdnimg.cn/img_convert/08bdcbc20e7ef31ac21bdfb441127fc7.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**


[外链图片转存中...(img-74zaDPEr-1715632904593)]

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值