01单点登录CAS 5.3.4搭建及使用

参考网址1
参照网址2
参照网址3

此文档代码GitHub地址

一.CAS介绍

单点登录Single Sign on (SSO),
CAS ( Central Authentication Service ),最初由耶鲁大学的Shawn Bayern 开发,后由Jasig社区维护,经过十多年发展,目前已成为影响最大、广泛使用的、基于Java实现的、开源SSO解决方案。cas旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。 CAS 开始于 2001 年, 并在 2004 年 12 月正式成为 JA-SIG 的一个项目。


二.部署步骤

1.下载Tomcat8.5,官网下载地址

2.生成SSL证书

2.1 生成证书

#生成证书保存到D盘的keystore
keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass guangyuan -validity 365 -keystore D:\guangyuan.keystore -storepass guangyuan
#生成证书的时候,记住CAS服务器的域名必须保持一致
【说明】:-alias后面的别名可以自定义,
-keypass指定证书密钥库的密码,
-storepass和前面keypass密码相同,否则下面tomcat 配置https 会访问失败 -keystore指定证书的位置,这里指定放在d盘根目录,密钥库名称可以自定义,这里是guangyuan.keystore  命令输入完成,回车之后,会提示你输入一些资料,见下图:

【注意】:第一个让你输入的“您的名字与姓氏是什么”,请必须输入在C:\Windows\System32\drivers\etc\hosts文件中加入的服务端的域名。
我这里也就是server.guangyuanbj.com,为何这么做?
首先cas只能通过域名来访问,不能通过ip访问,同时上方是生成证书,所以要求比较严格,
所以如果不这么做的话,即使最终按照教程配置完成,cas也可以正常访问,访问一个客户端应用虽然能进入cas验证首页,但是,当输入信息正确后,cas在回调转入你想访问的客户端应用的时候,会出现No subject alternative names present错误异常信息,这个错误也就是在上面输入的第一个问题答案不是域名导致、或者与hosts文件配置的不一致导致。

生成的密钥文件如下:

2.2 导出证书

#导出证书tomcat.cer,证书生成在 D盘
keytool -export -alias ssodemo -keystore d:\guangyuan.keystore -file d:\ssodemo.crt -storepass guangyuan【说明】:-alias后面的名称要与生成证书的命令里面的alias的名称一致. –keystore后面指定证书存放的位置,这里我放在D盘根目录,同时证书名称要与【生成证书】对应的命令里的keystore名称一致。这里是guangyuan.keystore,-file后面才crt路径,我也指定在d盘根目录。–storepass的证书密码要与上面输入的密码一致。

2.3 导入证书到JDK

#将证书导入到jdk的目录
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file d:\ssodemo.crt -alias ssodemo【说明】:-file指定证书的位置,也就是上一步导出证书的位置,即d:\ ssodemo.crt 命令中指定了JAVA_HOME,意思是将证书导入到客户端证书库,也就是jdk证书库中.因为客户端应用运行在本地,需要jdk的支持。回车之后,会让你输入密钥库口令,注意,这里的密码必须要输入changeit,不能输入上面指定的密码zhoubang,切记,否则导入客户端证书会有问题,如果是多台机器演示,需要在每一台客户端导入该证书,步骤都是一样的。当看到提示“是否信任此证书”,输入y回车即可,见下图:(说明,命令中的-alias后面的别名可以自定义,如果出现【证书未导入,别名<***>已经存在】的错误,该意思是说客户端的密钥库中已经存在该别名证书了,重新指定其他别名即可.)

至此SSL证书已准备好

3.配置Tomcat SSL

 <Connector SSLEnabled="true" clientAuth="false" keystoreFile="${catalina.base}/cert/guangyuan.keystore" keystorePass="guangyuan" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol"  scheme="https" secure="true"sslProtocol="TLS" />


验证HTTPS配置
启动tomcat,浏览器访问 https://server.guangyuanbj.com:8443


3 编译生成car.war

3.1 下载

cas-overlay-template 5.3 下载地址
,下载解压后截图如下:

3.2 下载pom.xml的依赖包

#管网下载地址
https://oss.sonatype.org/content/repositories/releases/org/apereo/cas/cas-server-webapp-tomcat/#安装war包到maven本地仓库
-Dfile 是需要上传到本地仓库的文件
mvn install:install-file -Dfile=D:/00workspace/02Guangyuan/cas/cas-server-webapp-tomcat-5.3.5.war -DgroupId=org.apereo.cas -DartifactId=cas-server-webapp-tomcat -Dversion=5.3.5-Dpackaging=war  

3.3 编译cas.war

3.4 验证cas.war

将cas.war在tomcat8.5.34下运行

http://server.guangyuanbj.com:8080/cas/login
https://server.guangyuanbj.com:8443/cas/login默认账号:casuser  默认密码:Mellon  目前的配置仅有这一个用户。目前这个服务端只能看看,没什么实际用途。建议您将CAS连接到LDAP、JDBC等。



4.使用Overlay生成真正有用的服务端

什么是Overlay
overlay可以把多个项目war合并成为一个项目,并且如果项目存在同名文件,那么主项目中的文件将覆盖掉其他项目的同名文件。使用maven 的Overlay配置实现无侵入的改造cas。
4.1 新建maven空项目

将Tomcat下cas.war的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.apereo.cas</groupId><artifactId>cas-server-base</artifactId><version>1.0</version><packaging>war</packaging><properties><cas.version>5.3.4</cas.version><springboot.version>2.0.0.RELEASE</springboot.version><!-- app.server could be -jetty, -undertow, -tomcat, or blank if you plan to provide appserver --><app.server>-tomcat</app.server><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${springboot.version}</version><configuration><mainClass>org.springframework.boot.loader.WarLauncher</mainClass><addResources>true</addResources></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><warName>cas</warName><failOnMissingWebXml>false</failOnMissingWebXml><recompressZippedFiles>false</recompressZippedFiles><archive><compress>false</compress><manifestFile>${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp${app.server}/META-INF/MANIFEST.MF</manifestFile></archive><overlays><overlay><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp${app.server}</artifactId></overlay></overlays></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version></plugin></plugins><finalName>cas</finalName></build><dependencies><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp${app.server}</artifactId><version>${cas.version}</version><type>war</type><scope>runtime</scope></dependency><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc</artifactId><version>${cas.version}</version></dependency><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc-drivers</artifactId><version>${cas.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.36</version></dependency><!--<dependency><groupId>org.jasig.cas</groupId><artifactId>cas-server-core-authentication</artifactId><version>4.2.7</version></dependency>--><!--<dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-core-util</artifactId><version>${cas.version}</version></dependency>--></dependencies><repositories><repository><id>sonatype-releases</id><url>http://oss.sonatype.org/content/repositories/releases/</url><snapshots><enabled>false</enabled></snapshots><releases><enabled>true</enabled></releases></repository><repository><id>sonatype-snapshots</id><url>https://oss.sonatype.org/content/repositories/snapshots/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>false</enabled></releases></repository><repository><id>shibboleth-releases</id><url>https://build.shibboleth.net/nexus/content/repositories/releases</url></repository><repository><id>spring-milestones</id><url>https://repo.spring.io/milestone</url></repository></repositories>
</project>

复制配置文件application.properties、log4j2.xml、META-INF

修改配置项application.properties、log4j2.xml:

配置idea中启动tomcat war包:


配置tomcat启动:




至此跟之前直接部署cas.war是一样的。

TODO:需要配置JDBC,读取mysql中的账号密码,而不是写死的账号密码


01单点登录CAS 5.3.4搭建及使用相关推荐

  1. SSO单点登录详解-------八、搭建CAS Client服务端

    一.前言 目前为止我们已经搭建好了CAS Server端,我们需要来搭建客户端配合使用,完成单点登录和单点注销的功能.我们将讲两种方式来搭建CAS Client端.一种是普通项目搭建,另一种是基于Sp ...

  2. CAS实现SSO单点登录-CAS Server搭建

    最近公司连续接了三四个单点登录集成的项目,由我们公司提供CAS Server端的,也有需要我们把Client与其他公司提供的Server端对接的,我负责把我们公司的一个Client与另外一个公司提供的 ...

  3. springmvc--sso单点登录cas统一身份认证器

    开发环境 maven idea Windows 10 JDK 1.8+ 域名解析的配置 这里通过SwitchHosts来实现:以管理员身份打开 前两个:两个客户端应用的域名 后一个:是服务端的域名. ...

  4. 单点登录CAS学习(一):初识单点登录

    一.单点登录应用场景 不少业主单位随着自身的发展,建立不少业务支撑系统,往往会采用不同的开发商进行系统开发和建设,因此必然形成如下一种局面:工作人员需要登录多个业务系统才能将自己的工作全部完成,给工作 ...

  5. 分析单点登录cas的解决方式

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  6. 单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...

    实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效 性,因此要点也就以下两个:1.存储信任 :2.服务器生产~验证信任 : 3.拿到服务器再次验证. 单点登录的常 ...

  7. 单点登录-CAS介绍

    什么是 CAS CAS(Central Authentication Service)是耶鲁大学的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方案.采用 CAS 最大的因素是从安全 ...

  8. jasig cas java示例_单点登录cas jasig学习笔记

    1 什么是单点登录 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信 ...

  9. 单点登录 cas 设置回调地址_单点登录(SSO)看这一篇就够了

    背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便. 但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多 ...

最新文章

  1. libxxx.so- text relocations问题的终极解决方案
  2. TLS/SSL协议工作原理
  3. Kaggle新赛:自动检测赛场上的头盔撞击事件
  4. java集合源码分析之HashMap
  5. Android FlashLight教程
  6. Mysql控制流语句
  7. PAT A1007 动态规划
  8. 2020 年,从架构谈起,到 Mesh 结束
  9. 深度学习-感知机模型---思路图解+python代码
  10. 【原创】高精度好题 Heaven Cow与God Bull
  11. 类似新浪微博中取消关注的弹出确认框
  12. APISpace 二维码生成器API
  13. OSChina 周四乱弹 ——程序员下班后8小时干嘛?啪啪啪
  14. 【Linux】基本指令和常用应用安装
  15. 异常org.apache.ibatibinding.BindingException: Invalid bound statement (not found): com.sxt.mybatis.map
  16. 【谈谈疫情+金三银四下测试面试的行情】一个月内连续面试40+位候选人。
  17. django批量修改table_django formset实现数据表的批量操作的示例代码
  18. android app 唤醒屏幕
  19. AndroidStudio - - - 点击头像更换头像_菜单选择_相机拍照与相册获取
  20. 应用大数据助力车险反欺诈

热门文章

  1. java读法,Java 把数字转换为中文读法
  2. golang之race
  3. PWA 应用 Service Worker 缓存的一些可选策略和使用场景
  4. java 闹钟代码_java开发之闹钟的实现代码
  5. *(Virtual.Lab Acoustics声学仿真计算高级应用实例声学仿真计算从入门到精通.光盘下载链接)**
  6. MATLAB如何在原图插入一个局部放大图
  7. mysql 命令行 外键_MySQL命令行MySql外键设置详解
  8. html怎么判断字段,javascript中怎么判断字符串相等?
  9. 用CAD绘制奥迪车标
  10. python中config什么意思,使用Python中的config配置