好久没发表什么文章了,也不是不发,是没研究什么东西。最近在做一个门户项目,要用到单点登录这个功能,所以就开始研究起了单点登录,开源的框架也挺多的,但是好像也都不怎么适用,网上关于单点登录的资料又少的可怜。最后跟领导商议用耶鲁大学的开源框架CAS进行研究及开发。下面在研究过程中一些笔记,有些也是在网上找到的。都是按照这个流程走下来的,在中途遇到好多莫名其妙的问题,有些事解决了,但是还有些小问题没能彻底解决,但是能跑的动,如果大家有兴趣的话,可以一起讨论。
下面为具体的流程
单点登录
SSO是目前比较流行的企业业务整合的解决方案之一,它定义在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS 是Yale(耶鲁)大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,在2004年12月正式成为JA-SIG的一个项目。目前,也已经有许多应用CAS实现单点登录的成功案例。
一、下载所需软件
CAS Server:http://www.jasig.org/cas/download
CAS Client:http://downloads.jasig.org/cas-clients/
本文下载的版本是:
cas-server-3.4.11-release.zip
cas-client-3.2.1-release.zip
二、配置过程
1、Tomcat
本文将配置一个单独的Tomcat环境将CAS用,因为原有的Tomcat可能要用于其它项目的开发,就不想在原有上面的Tomcat开刀了。
下载apache-tomcat-6.0.30-windows-x64.zip,解压到C盘,并命名为:Tomcat6_CAS
因为要存在多个Tomcat,所以新建环境变量:
CATALINA_HOME_CAS=C:\Tomcat6_CAS
CATALINA_BASE_CAS=C:\Tomcat6_CAS
然后修改Tomcat下所有指向CATALINA_HOME和CATALINA_BASE,可以用DW一次性打开C:\Tomcat6_CAS\bin下面的所有.bat文件,然后利用查找替换功能一次搞定。
修改Tomcat6_CAS的http访问端口为80端口(因为到时要用域名访问,需要修改hosts,而hosts不支持端口号),打开conf/server.xml,修改成:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
启动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,看看能不能访问,如图:
要实现CAS SSO,必须让Tomcat支持SSL,下面将讲一下如何配置SSL。
本文使用的Tomcat版本是:apache-tomcat-6.0.30-windows-x64.zip
一、生成Key Store
1
C:\Java\jdk1.6.0_27\bin>keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "C:\Tomcat6_CAS\keystore\gevinme.keystore" -validity 360
注意:第一个问一定要填写cas server的域名,否则到时访问客户端程序时将会报以下的错误:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching xxx.xxx.xx found
参数介绍:
-alias 密钥的别名
-keyalg 密钥使用的加密算法,此处使用RSA
-keystore 密钥存储的位置,默认是存在用户主目录下,此处则指定存储位置
-validity 密钥的有效期
更多关于keytool的参数说明请参考《JDK keytool参数说明》
keystore的密码我设置为gevinme,与Tomcat的管理员密码一样,tomcat-user.xml额外增加了以下权限:
<tomcat-users>
<user username="admin" password="gevinme" roles="admin,manager"/>
</tomcat-users>
执行完上述命令后,将会在指定的目录下生成gevinme.keystore文件,如图:
二、配置SSL连接器
修改Tomcat\conf\server.xml文件
将以下的内容的注释去掉,并增加以下密钥位置和密码:
<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"
/> 此时启动后会报以下错误:
1 java.lang.exception connector attribute sslcertificatefile must be defined when using ssl with apr
只需要将conf\server.xml里面的以下内容注释掉即可:
<!--
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
-->
三、测试访问:
启动Tomcat,访问https://127.0.0.1:8443
点击“证书错误”后,可以查看到我们刚刚生成的密钥的相关信息:
至此,Tomcat的SSL配置过程已完成,下面将介绍如何导出证书和客户端如何导入服务器端生成的证书,为之后的SSO做准备。
四、导出证书
1
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"
五、客户端导入证书
在运行客户端程序的机器上导入证书,需要注意的是此入导入的jre必须是Tomcat指向的jre。(本文在同一台机器上测试)
1
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"
如果看到这个图显示的东西时,说明你的证书已经生成,并且把证书已经导入到客户端。
未完有时间再续~~~~
- 大小: 32.2 KB
- 大小: 49.6 KB
- 大小: 23.5 KB
- 大小: 36.6 KB
- 大小: 66.4 KB
- 大小: 19.6 KB
- 大小: 43.4 KB
分享到:
相关推荐
### 单点登录SSO解决方案之SpringSecurity+JWT实现 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On,简称SSO)是一种认证机制,允许用户仅通过一次登录就能访问同一域下的多个应用程序和服务。这种机制...
单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。这种技术极大地提升了用户体验,减少了用户记忆和管理多套用户名和密码的负担,...
单点登录SSO的实现原理 单点登录(SSO)是一种常见的技术实现原理,在多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。实现单点登录说到底就是要...
单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次认证即可访问多个相互关联的系统。在SSO系统中,客户端和服务端是两个关键组成部分。 客户端通常是指用户交互的...
【标题】:“帝国cms oauth2.0 单点登录sso” 在IT行业中,单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户通过一次登录即可访问多个相互关联的应用系统,无需为每个系统分别进行认证。这里的...
sso单点登录ppt.ppt
跨服务器登录验证(单点登录SSO)的过程和Java实现 跨服务器登录验证(单点登录SSO)是指用户只需要登录一次便可以访问多个相关的应用系统的机制。这种机制可以提高用户体验和系统安全性。下面我们将介绍跨服务器...
Asp.net 单点登录SSO截HttpModel方法;决对实用好用的源码。 网上有很多sso,多数都是共享cookie,而这个是用在同一个iis下,截取httpmodel,修改User.Identity,记录它为用户信息可以到处用。 当然你也可修改扩展。。...
超全 Lotus Domino Xpages 开发资料——单点登录SSO的实现方式 大全通过分类提供给大家,请大家根据需要下载全开源, 并且一看就懂,不保留 https://blog.csdn.net/weijia3624/article/details/107013401
文档"EPBWECC配置单点登录SSO.doc"详细阐述了如何在EP(Enterprise Portal)系统中配置与BW(Business Warehouse)和ECC(Enterprise Central Component)系统的单点登录(SSO, Single Sign-On)集成。以下是配置步骤的详细...
【跨服务器登录验证(单点登录SSO)】 单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一个系统中登录后,无需再次认证即可访问其他相互信任的系统。SSO简化了用户对多个系统的访问流程,提高...
【跨服务器登录验证(单点登录SSO)】 单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一个系统中登录后,无需再次认证即可访问其他相互信任的系统。SSO简化了用户对多个系统的访问流程,提高...
单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入认证信息。这种机制极大地提高了用户体验,减少了用户记忆多套账号密码的困扰,...
Java单点登录(Single Sign-On,SSO)是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个应用系统。SSO的核心思想是:用户只需要在一个可信的身份认证中心(Identity Provider,IdP)进行身份...
单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户在一个系统上登录后,无需再次输入凭证即可访问多个相互关联的系统。SSO的主要目标是提高用户体验,减少用户记忆多个密码的负担,同时也能提高...
X2.5与CAS(Central Authentication Service)集成是一种常见的身份验证解决方案,它能够实现单点登录(Single Sign-On, SSO)功能。在SSO系统中,用户只需登录一次,就可以在多个相互独立的应用系统之间自由切换,...