单点登录(SSO)

好久没发表什么文章了,也不是不发,是没研究什么东西。最近在做一个门户项目,要用到单点登录这个功能,所以就开始研究起了单点登录,开源的框架也挺多的,但是好像也都不怎么适用,网上关于单点登录的资料又少的可怜。最后跟领导商议用耶鲁大学的开源框架CAS进行研究及开发。下面在研究过程中一些笔记,有些也是在网上找到的。都是按照这个流程走下来的,在中途遇到好多莫名其妙的问题,有些事解决了,但是还有些小问题没能彻底解决,但是能跑的动,如果大家有兴趣的话,可以一起讨论。

下面为具体的流程


[color=red] 单点登录[/color]

SSO是目前比较流行的企业业务整合的解决方案之一,它定义在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS 是Yale(耶鲁)大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,在2004年12月正式成为JA-SIG的一个项目。目前,也已经有许多应用CAS实现单点登录的成功案例。


一、下载所需软件

[color=red]CAS Server:http://www.jasig.org/cas/download
CAS Client:http://downloads.jasig.org/cas-clients/[/color]

本文下载的版本是:
[color=red]cas-server-3.4.11-release.zip
cas-client-3.2.1-release.zip[/color]


二、配置过程
1、Tomcat
本文将配置一个单独的Tomcat环境将CAS用,因为原有的Tomcat可能要用于其它项目的开发,就不想在原有上面的Tomcat开刀了。

下载apache-tomcat-6.0.30-windows-x64.zip,解压到C盘,并命名为:Tomcat6_CAS

因为要存在多个Tomcat,所以新建环境变量:
[color=red]CATALINA_HOME_CAS=C:\Tomcat6_CAS
CATALINA_BASE_CAS=C:\Tomcat6_CAS[/color]


然后修改Tomcat下所有指向CATALINA_HOME和CATALINA_BASE,可以用DW一次性打开C:\Tomcat6_CAS\bin下面的所有.bat文件,然后利用查找替换功能一次搞定。

修改Tomcat6_CAS的http访问端口为80端口(因为到时要用域名访问,需要修改hosts,而hosts不支持端口号),打开conf/server.xml,修改成:

[color=red] <Connector port="80" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" /> [/color]


启动Tomcat,访问http://127.0.0.1 看看能不能打开。


映射域名(此处使用gevin.me作为例子),修改C:\Windows\System32\drivers\etc\hosts文件,增加以下记录:

127.0.0.1 sso.gevin.me (这个是域名,在生成证书的时候根据自己的情况,填写自己的域名,什么都可以)
访问http://sso.gevin.me,看看能不能访问,如图:


[img]http://dl.iteye.com/upload/attachment/0072/7425/dea43dbb-78be-3ac6-a02c-3c7ade72796c.jpg[/img]


要实现CAS SSO,必须让Tomcat支持SSL,下面将讲一下如何配置SSL。

本文使用的Tomcat版本是:apache-tomcat-6.0.30-windows-x64.zip

一、生成Key Store

1 [color=red]C:\Java\jdk1.6.0_27\bin>keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "C:\Tomcat6_CAS\keystore\gevinme.keystore" -validity 360 [/color]


[img]http://dl.iteye.com/upload/attachment/0072/7427/f829dd89-74f4-3f62-9b9f-4f63de2a39da.jpg[/img]


注意:第一个问一定要填写cas server的域名,否则到时访问客户端程序时将会报以下的错误:

[color=red]javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching xxx.xxx.xx found[/color]
参数介绍:

-alias 密钥的别名

-keyalg 密钥使用的加密算法,此处使用RSA

-keystore 密钥存储的位置,默认是存在用户主目录下,此处则指定存储位置

-validity 密钥的有效期

更多关于keytool的参数说明请参考《JDK keytool参数说明》

keystore的密码我设置为gevinme,与Tomcat的管理员密码一样,tomcat-user.xml额外增加了以下权限:

[color=red] <tomcat-users>

<user username="admin" password="gevinme" roles="admin,manager"/>

</tomcat-users> [/color]


执行完上述命令后,将会在指定的目录下生成gevinme.keystore文件,如图:

[img]http://dl.iteye.com/upload/attachment/0072/7429/5fa7222a-107b-3846-b4e9-bb7ce9ac3b2c.jpg[/img]





二、配置SSL连接器

修改Tomcat\conf\server.xml文件

将以下的内容的注释去掉,并增加以下密钥位置和密码:

[color=red]<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="C:\Tomcat6_CAS\keystore\gevinme.keystore"

keystorePass="gevinme"

/> [/color]此时启动后会报以下错误:

[color=blue]1 java.lang.exception connector attribute sslcertificatefile must be defined when using ssl with apr [/color]

只需要将conf\server.xml里面的以下内容注释掉即可:

[color=red]<!--

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

--> [/color]


三、测试访问:

启动Tomcat,访问https://127.0.0.1:8443


[img]http://dl.iteye.com/upload/attachment/0072/7431/679af8d6-b3e3-33eb-af21-d92edb32375f.jpg[/img]


点击“证书错误”后,可以查看到我们刚刚生成的密钥的相关信息:


[img]http://dl.iteye.com/upload/attachment/0072/7433/b5d1435b-eaf8-3a08-b4a6-4b8553d6d1dc.jpg[/img]



至此,Tomcat的SSL配置过程已完成,下面将介绍如何导出证书和客户端如何导入服务器端生成的证书,为之后的SSO做准备。

四、导出证书


1 [color=red][b]C:\Java\jdk1.6.0_27\bin>keytool -export -alias tomcat -file "C:\Tomcat6_CAS\keystore\gevinme.cert" -keystore "C:\Tomcat6_CAS\keystore\gevinme.keystore" [/b][/color]


[img]http://dl.iteye.com/upload/attachment/0072/7435/83a1efb0-f2ef-3759-af69-1d34ea33e964.jpg[/img]


五、客户端导入证书

在运行客户端程序的机器上导入证书,需要注意的是此入导入的jre必须是Tomcat指向的jre。(本文在同一台机器上测试)

1 [color=red]C:\Java\jdk1.6.0_27\bin>keytool -import -alias tomcat_client -trustcacerts -file "C:\Tomcat6_CAS\keystore\gevinme.cert" -keystore "C:\Java\jre6\lib\security\cacerts" [/color]


[img]http://dl.iteye.com/upload/attachment/0072/7439/94588650-b180-3f06-87e5-1340ab70799f.jpg[/img]

如果看到这个图显示的东西时,说明你的证书已经生成,并且把证书已经导入到客户端。

未完有时间再续~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值