Shior Cas 实现单点登录(SSO)

Shior Cas 实现单点登录(SSO)

前言

本项目集成参照了很多大佬的博客和代码,在此感谢各位大佬的奉献。

Cas概念

参照:
了解Cas整体概念
希望在做Cas 集成的 各位大佬 读一下 这个文章,以便以后跟其他人也好说 这些我都懂。

项目环境构筑条件

1.Tomcat
2.Jdk1.8
3.Idea

Cas Server 构建

本人项目采用的是耶鲁Cas 5.3 版本,在2016年以前我用的是3.7 版本 。5.3版本和3.7版本
差距还是很大的,还好网上能够参考的资料够多。所以有开启了一段折磨,哎加了2天班弄出来,
我的周67又这么没了。
Cas server 项目构建 需要去github 上获取项目代码,项目导入到idea 中

https://github.com/apereo/cas-overlay-template/tree/5.3

项目导入到Idea中

mvn install
mvn package 

如果没有任何意外的情况下,target文件夹下面会生成一个Cas.war 的war包,
这个就是Cas Server,需要放在Tomcat 中去运行,
现在简单的Cas Server 已经构建完成了,
接下来我们需要修改CasServer的配置文件、
Cas 的登录页(这个页面肯定是需要定制化的,除非你们老板是个NT)
在这里插入图片描述
这src后面的目录都是后面开发需要的
services 文件夹中
HTTPSandIMAPS-10000001.json
定义自己项目的 Cas使用的协议

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(https|http|imaps)://.*",
  "name" : "HTTPS and IMAPS",
  "id" : 10000001,
  "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
  "evaluationOrder" : 10000
}

  "serviceId" : "^(https|http|imaps)://.*", 这里表示支持https和http协议 我们没钱买证书所以用的http
  也就修改这一处就可以

application.properties
这个是定义你Cas 支持的一些功能

##
# CAS Server Context Configuration
#
server.context-path=/cas
server.port=8443

#server.ssl.key-store=E:/mycas/dkyzs.keystore
#server.ssl.key-store-password=123456
#server.ssl.key-password=123456
# server.ssl.ciphers=
# server.ssl.client-auth=
# server.ssl.enabled=
# server.ssl.key-alias=
# server.ssl.key-store-provider=
# server.ssl.key-store-type=
# server.ssl.protocol=
# server.ssl.trust-store=
# server.ssl.trust-store-password=
# server.ssl.trust-store-provider=
# server.ssl.trust-store-type=

server.max-http-header-size=2097152
server.use-forward-headers=true
server.connection-timeout=20000
server.error.include-stacktrace=ALWAYS

server.compression.enabled=true
server.compression.mime-types=application/javascript,application/json,application/xml,text/html,text/xml,text/plain

server.tomcat.max-http-post-size=2097152
server.tomcat.basedir=build/tomcat
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)
server.tomcat.accesslog.suffix=.log
server.tomcat.max-threads=10
server.tomcat.port-header=X-Forwarded-Port
server.tomcat.protocol-header=X-Forwarded-Proto
server.tomcat.protocol-header-https-value=https
server.tomcat.remote-ip-header=X-FORWARDED-FOR
server.tomcat.uri-encoding=UTF-8

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

##
# CAS Cloud Bus Configuration
#
spring.cloud.bus.enabled=false
# spring.cloud.bus.refresh.enabled=true
# spring.cloud.bus.env.enabled=true
# spring.cloud.bus.destination=CasCloudBus
# spring.cloud.bus.ack.enabled=true

endpoints.enabled=false
endpoints.sensitive=true

endpoints.restart.enabled=false
endpoints.shutdown.enabled=false

management.security.enabled=true
management.security.roles=ACTUATOR,ADMIN
management.security.sessions=if_required
management.context-path=/status
management.add-application-context-header=false

security.basic.authorize-mode=role
security.basic.enabled=false
security.basic.path=/cas/status/**

##
# CAS Web Application Session Configuration
#
server.session.timeout=300
server.session.cookie.http-only=true
server.session.tracking-modes=COOKIE

##
# CAS Thymeleaf View Configuration
#
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=true
spring.thymeleaf.mode=HTML
##
# CAS Log4j Configuration
#
# logging.config=file:/etc/cas/log4j2.xml
server.context-parameters.isLog4jAutoInitializationDisabled=true

##
# CAS AspectJ Configuration
#
spring.aop.auto=true
spring.aop.proxy-target-class=true

##
# CAS Authentication Credentials
#
#cas.authn.accept.users=user::123

cas.tgc.secure=false
#使用json配置
cas.serviceRegistry.initFromJson=true

#允许退出之后重定向页面
cas.logout.followServiceRedirects=true

#Query Database Authentication 数据库查询校验用户名开始
#查询账号密码sql,必须包含密码字段
cas.authn.jdbc.query[0].sql=select * from sys_user where status=0 and username=?
#指定上面的sql查询字段名(必须)
cas.authn.jdbc.query[0].fieldPassword=password
#指定过期字段,1为过期,若过期不可用
#cas.authn.jdbc.query[0].fieldExpired=expired
#为不可用字段段,1为不可用,需要修改密码
#cas.authn.jdbc.query[0].fieldDisabled=disabled
#数据库方言hibernate的    我用的是PostgreSQLDialect 这里可以换成其他的
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.PostgreSQLDialect
#数据库驱动
cas.authn.jdbc.query[0].driverClass=org.postgresql.Driver
#数据库连接     数据库链接我就不让你们看库名了
cas.authn.jdbc.query[0].url=jdbc:postgresql://192.168.0.252:5432/XXXXXXX?charSet=UTF-8
#数据库用户名
cas.authn.jdbc.query[0].user=postgres
#数据库密码
cas.authn.jdbc.query[0].password=123456
#默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
#Query Database Authentication 数据库查询校验用户名结束
#st.timeToKillInSeconds=10
#st.numberOfUses=5
#tgt.timeToKillInSeconds=7200
#st.timeToKillInSeconds=10
#st.numberOfUses=5
cas.ticket.st.timeToKillInSeconds=60
cas.ticket.st.numberOfUses=5
cas.ticket.tgt.timeout.maxTimeToLiveInSeconds=7200

cas.authn.rest.uri=http://192.168.0.254:9000/cas/v1

#取消x-frame-options为deny限制,允许外部项目使用iframe嵌入cas-server登录页面
cas.httpWebRequest.header.xframe=false

#跨域
cas.httpWebRequest.cors.enabled=true
cas.httpWebRequest.cors.allowCredentials=false
cas.httpWebRequest.cors.allowOrigins[0]=*
cas.httpWebRequest.cors.allowMethods[0]=*
cas.httpWebRequest.cors.allowHeaders[0]=*

其他文件夹就是修改Cas 登录页面的了 我就不网上传了

参照网站
优先参照下面三个

https://blog.csdn.net/oumuv/article/details/83377945
https://www.cnblogs.com/whu-2017/p/11297447.html
https://www.geek-share.com/detail/2802648998.html

剩下的可以随便读一读

https://www.cnblogs.com/whu-2017/p/11297447.html
https://blog.csdn.net/qq_33101675/article/details/105440375
https://blog.csdn.net/anumbrella/category_7765386.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值