JAVA CAS单点登录之一:搭建CAS服务器

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dba10g.blog.51cto.com/764602/1753086

前言

这一段时间,心血来潮研究了下CAS这个应用。对它感兴趣,几年前就有过,就是一直没有踏实好好研究,一直是断断续续的纸上谈兵,东看看,西看看。CAS说白了主要涉及权限认证相关,逻辑非常简单。但真正部署起来,也不是一件容易事。我想主要原因如下。

  1. 由于知名原因,访问官网非常有难度,系统全面地获取资料非常难,且中文资料更少

  2. 国内虽然已经有很多博客论坛已经分享了很多部署步骤和认证流程,但一步步真正演练起来,非常困难,对遇到的异常提到的很少。一些必要的参数,根本不提。让后来者多走了很多弯路。何况,博客年代大多是年代久远了。

  3. 个人成功部署起来一套完整的应用,包括CAS普通模式,CAS 代理模式。竟然花了5个晚上,(1)部分原因是网上资源不靠谱。(2)涉及maven解决jar依赖关系耗时耗力,恶心。(3)想搜索遇到的异常解决方案,根本没有文章提到。

个人想把自己辛苦5个晚上的经历和异常分享出来,希望和大家一起成长,大家少走弯路。本博客的重点是技术不走层面,理论讲解相关的放到次要位置,但也不是不提。

准备工作

先需要了解相关的概念。

  1. SSO(单点登录)

  2. CAS

  3. HTTPS

  4. COOKIE,SESSION

  5. 安全证书

  6. 加密解密等

环境参数

涉及的所有参数都在我的实体机(WIN7)完成的。分别按照了3个TOMCAT服务端。

  • Tomcat6.0.36

  • JDK7

  • CAS Server版本:cas-server-3.5.3

  • CAS Client版本:cas-client-3.1.1


域名映射(C:\Windows\System32\drivers\etc\hosts)

1
2
127.0.0.1 hellocas1.com
127.0.0.1 hellocas2.com

主机名

zhaoguoyu-pc


主要内容

  1. 创建证书

  2. 部署CAS服务器

创建证书

使用java keytool证书工具(官方例子)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
 
C:\Documents and Settings\ukari> cd  \program*
The filename, directory name, or volume label syntax is incorrect.
 
C:\Program Files> cd  java
 
C:\Program Files\Java> cd  jdk*
 
C:\Program Files\Java\jdk1.5.0_11> cd  bin
 
C:\Program Files\Java\jdk1.5.0_11\bin>keytool -genkey - alias  tomcat -keypass changeit -keyalg RSA
Enter keystore password:  changeit
What is your first and last name?
   [Unknown]:  compA
What is the name of your organizational unit?
   [Unknown]:  Information Systems
What is the name of your organization?
   [Unknown]:  Pacific Disaster Center
What is the name of your City or Locality?
   [Unknown]:  Kihei
What is the name of your State or Province?
   [Unknown]:  HI
What is the two-letter country code  for  this unit?
   [Unknown]:  US
Is CN=compA, OU=Information Systems, O=Pacific Disaster Center, L=Kihei, ST=HI, C=US correct?
   [no]:   yes
 
C:\Program Files\Java\jdk1.5.0_11\bin>keytool - export  - alias  tomcat -keypass changeit - file  server.crt
Enter keystore password: changeit
Certificate stored  in  file  <server.crt>
 
C:\Program Files\Java\jdk1.5.0_11\bin>keytool - import  - file  server.crt -keypass changeit -keystore ..\jre\lib\security\cacerts
Enter keystore password: changeit
Owner: CN=compA, OU=Information Systems, O=Pacific Disaster Center, L=Kihei, ST=HI, C=US
Issuer: CN=compA, OU=Information Systems, O=Pacific Disaster Center, L=Kihei, ST=HI, C=US
Serial number: 462030d8
Valid from: Fri Apr 13 15:39:36 HST 2007  until : Thu Jul 12 15:39:36 HST 2007
Certificate fingerprints:
MD5: CC:3B:FB:FB:AE:12:AD:FB:3E:D 5:98:CB:2E:3B:0A:AD
SHA1: A1:16:80:68:39:C7:58:EA:2F:48:59:AA:1D:73:5F:56:78:CE:A4:CE
Trust this certificate? [no]:  yes
Certificate was added to keystore
 
C:\Program Files\Java\jdk1.5.0_11\bin>


需要注意:

1.输入姓名时,要输入你及其的机器名。

2.如果你以前省生成过证书,可能会报密码不正确类似,试一试密码改为"changeit"
3.解释下导入到${java_home}\jre\lib\security目录下,证书名必须是cacerts。影响的是整个JDK环境,也就意味着影响了后来部署的tomcat app应用。刚开始,我一直没弄明白,这一步是的具体含义。看多了博客,自己揣摩的。
4.最好备份一套本地jre环境.因为你替换了证书之后,使用maven时会报安全方面的错误。到时临时切换下环境即可,省了麻烦事。


如果你懂得反呛,参考链接
https://wiki.jasig.org/display/CASUM/Demo
https://wiki.jasig.org/display/CASUM/SSL+Troubleshooting+and+Reference+Guide


部署CAS服务器


(1)安装Tomcat服务器,最好复制三分。

        略    

( 2) 开启SSL

        打开tomcat目录的conf/server.xml文件。

        修改内容片段如下

 

1
2
3
4
5
6
7
    < Connector  port = "443"  protocol = "org.apache.coyote.http11.Http11NioProtocol"  SSLEnabled = "true"
                maxThreads = "150"  scheme = "https"  secure = "true"
                clientAuth = "false"  sslProtocol = "TLS" 
                 keystoreFile = "C:\Users\Administrator\.keystore" 
                 keystorePass = "changeit"
                 truststoreFile = "D:\Java\jdk1.7.0_65\jre\lib\security\cacerts"
                />


参数说明:

  • keystoreFile:在第一步创建的key存放位置

  • keystorePass:创建证书时的密码 

    这是使用的keystoreFile 参数指定的.keystore文件是上面keytool -genkey 步骤中自动生成的。该文件是个隐形文件,一般默认在我的文档下面。

  (3) 修改端口

1
    1. < Server  port = "8555"  shutdown = "SHUTDOWN" >

    2.官方文档中可以关闭8080端口,仅仅使用443安全端口,但是为了咱们以后与IDEA或Eclipse部署源码,最好暴露。否则不能很好的集成。总之在IDEA工具总是这样。

1
2
3
     < Connector  port = "8888"  protocol = "HTTP/1.1"               
      connectionTimeout = "20000"                
      redirectPort = "8443"  />

   (4)部署cas server


启动tomcat,浏览器输入地址https://zhaoguoyu-pc/cas/login

wKiom1buNhjCYICyAABkIqcm5S4898.png

接下来:输入用户名/密码。主要用户名和密码相同即可。可以输入admin/admin 或者test/test


wKioL1buNoaiNpdkAACJm1wyWX4048.png


出现这个画面,就表示你CA 服务器安装成功了。


如果没有成功,一般主要是证书方面的问题。

1.确认证书是否使用的是机器名。

2.确认选择的JDK。

3.最好在环境变量中不要设置TOMCAT_HOME环境变量。

4.如果Tomcat不能正常启动,大部分是端口被占用,请修改其他端口。

5.确认Tomcat SSL 的protoca协议












本文出自 “简单” 博客,请务必保留此出处http://dba10g.blog.51cto.com/764602/1753086

目录
相关文章
|
1天前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
3月前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
105 2
|
4月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
122 9
|
5月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
224 1
|
2天前
|
人工智能 运维 数据可视化
玩转云服务器——阿里云操作系统控制台体验测评
在云服务器日益普及的背景下,运维人员对操作系统管理工具的要求不断提高。我们需要一款既能直观展示系统状态,又能智能诊断问题,提供专业指导的控制台。阿里云操作系统管理平台正是基于API、SDK、CLI等多种管理方式,致力于提升操作效率,为用户带来全新的系统运维体验。阿里云操作系统控制台凭借便捷易用的设计和高效的管理功能,成为云服务器运维的强力助手。本次测评基于真实体验截图,对其整体表现进行了深入探索。
54 33
|
4天前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
6天前
|
存储 人工智能 运维
阿里云操作系统控制台——解决服务器磁盘I/O故障
阿里云操作系统控制台——解决服务器磁盘I/O故障
34 12
|
6天前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
63 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
|
7天前
|
弹性计算 Linux 数据安全/隐私保护
阿里云幻兽帕鲁联机服务器搭建全攻略,速来抄作业!2025新版教程
阿里云提供2025年最新幻兽帕鲁服务器申请购买及一键开服教程。4核16G配置支持8人,70元/月;8核32G配置支持20人,160元/月。选择配置、地域、操作系统后,点击【一键购买及部署】,约3分钟完成创建。本地安装STEAM客户端并登录,进入游戏选择多人模式,输入服务器IP和端口(8211),即可开始游戏。详细教程及更多问题解答请参考阿里云幻兽帕鲁游戏专区。
52 20
|
9天前
|
弹性计算 数据可视化 Linux
阿里云操作系统控制台——ECS操作与性能优化
本文详细介绍如何操作阿里云服务器ECS,从开通到组件安装及内存诊断。首先,通过选择操作系统(如Alibaba Cloud Linux 3)并开通服务,创建RAM用户并授予权限。接着,安装所需组件,支持节点或集群安装。最后,利用内存全景诊断功能,输入实例ID或Pod名称发起诊断并解析结果。这一流程帮助用户高效搭建计算环境,提升技术能力,确保业务稳定运行,并提出优化建议以改善用户体验。
60 8

热门文章

最新文章