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

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

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

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

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

2.确认选择的JDK。

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

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

5.确认Tomcat SSL 的protoca协议

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

时间: 2024-08-21 15:46:18

JAVA CAS单点登录之一:搭建CAS服务器的相关文章

JAVA CAS单点登录之四:CAS服务器增加JDBC访问能力

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1753680 经过前面说明,已经完成了CAS服务器的搭建,代理客户端的搭建以及普通客户端,back-end-service客户端的搭建.如果不明白的,参照如下链接. JAVA CAS单点登录之一:搭建CAS服务器  JAVA CAS单点登录之二:CAS普通模式1演练 JAVA CAS单点登录之三:CAS代理模式演练  现

JAVA CAS单点登录之三:CAS代理模式演练

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1753244 前言  JAVA CAS单点登录之一:搭建CAS服务器     JAVA CAS单点登录之二:CAS普通模式1演练     代理模式相相对上一节的普通模式,更加复杂了.但配置起来也会稍微有些差别.所谓难者不会,会者不难.如果遇到一个从来没有遇到的问题,解决起来也是非常棘手的,当然解决之后就不是事了.我就遇到

JAVA CAS单点登录之二:CAS普通模式1演练

前言 经过上一JAVA CAS单点登录之一:搭建CAS服务器 这一章,CAS服务器已经搭建好了.当然这时候的CAS服务器仅仅是最初版本的.比如密码验证,页面美观度都需要进一步调整.但这都是无关紧要的. 最主要的是先把整个一套认证流程走下来,至于完善的工作,都是没个点的工作了,相对比较简单. 主要内容    1. 新建一个web应用mywebapp1,测试与CAS服务器的认证效果     2.如果上一步骤1认证成功的话,将mywebapp1复制一份,调整若干参数,继续测试.     如果步骤1,步

CAS单点登录(SSO)完整教程

CAS单点登录(SSO)完整教程(2012-02-01更新) 一.教程说明 前言 教程目的:从头到尾细细道来单点登录服务器及客户端应用的每个步骤 单点登录(SSO):请看百科解释猛击这里打开 本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server), 官网:http://www.jasig.org/cas 本教程环境: Tomcat6.0.29 JDK6 CAS Server版本:cas-server-3.4.3.1.cas-server-

CAS单点登录之mysql数据库用户验证及常见问题

前面已经介绍了CAS服务器的搭建,详情见:搭建CAS单点登录服务器.然而前面只是简单地介绍了服务器的搭建,其验证方式是原始的配置文件的方式,这显然不能满足日常的需求.下面介绍下通过mysql数据库认证的方式. 一.CAS认证之mysql数据库认证 1.在mysql中新建一个cas数据库并创建user表 CREATE DATABASE /*!32312 IF NOT EXISTS*/`cas` /*!40100 DEFAULT CHARACTER SET gbk */; USE `cas`; /*

java-【急】求大神帮帮忙,CAS单点登录问题,登录成功后controller收不到请求(要哭了)

问题描述 [急]求大神帮帮忙,CAS单点登录问题,登录成功后controller收不到请求(要哭了) 首先说下问题,我们的项目之前SSO单点登录一直用的http的方式, 这一块登录一直都是正常的,现在要切上正式环境了,SSO服务器那边就改用了https的方式SSO配置如下: <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-cla

CAS单点登录时AJAX页面刷新无反应(302 Moved Temporarily)

最近使用CAS做单点认证服务时发现过大概二十分钟后就发现凡是异步方式刷新页面就无反应了(由于使用EasyUI框架,所以页面刷新基于ajax+div方式),刚开始一直认为是CAS服务端超时的问题,查看了各个配置,网上也参考了许多帖子,一直没有解决,今天无意想起来是不是session过期了呢,因为单点登录客户端没有配置任何session有效时长,也就是说客户端的session时长为tomcat默认时长(网上有人说Tomcat默认session有效期为30分钟,而现在发现的是大概20分钟后就会出现用a

SpringSecurity+JPA+CAS单点登录

问题描述 SpringSecurity+JPA+CAS单点登录错误信息如下:ERRORContextLoader:220-Contextinitializationfailedorg.springframework.beans.factory.BeanDefinitionStoreException:UnexpectedexceptionparsingXMLdocumentfromServletContextresource[/WEB-INF/classes/applicationContext

CAS单点登录?

问题描述 谁有现成的CAS单点登录的案例?最好有源码的,谢谢各位大侠.我看了很多关于这方面的帖子,可是都是讲怎么配置的,我已经学会生成安全证书,并配置好CAS服务器了,请高手告诉我怎么应用到项目中去. 解决方案 解决方案二:该回复于2011-10-11 09:06:55被版主删除

CAS单点登录

问题描述 最近做了一个项目,其中有一个模块需要实现的是电话录音功能.所用设备是申瓯通讯的电话录音盒,所有电话都通过此设备,设备里面有他自己的一套管理界面,可以进行电话录音的查询试听下载等.本项目中想实现的电话录音功能要和设备中的管理界面的功能一样,自己重新开发太麻烦.而只简单的做个连接的话又要二次登录,而且登录进去后界面也和本项目的风格不一样,所以现在就想到了CAS单点登录的实现.由于以前没接触过关于单点登录的.在网上找了些源码及小例子.虽然都配置成功了.但又出现个问题,想特此请教各位.问题:在