`
lwazl1314
  • 浏览: 12211 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
最近访客 更多访客>>
社区版块
存档分类
最新评论

单点登录(SSO)

    博客分类:
  • J2EE
 
阅读更多

好久没发表什么文章了,也不是不发,是没研究什么东西。最近在做一个门户项目,要用到单点登录这个功能,所以就开始研究起了单点登录,开源的框架也挺多的,但是好像也都不怎么适用,网上关于单点登录的资料又少的可怜。最后跟领导商议用耶鲁大学的开源框架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
1
5
分享到:
评论
3 楼 llixinrui_strive 2015-10-08  
[img]
[/img]
2 楼 lwazl1314 2012-08-22  
junjun185576005 写道
期待后续,不过图片好像没有。。

现在有了
1 楼 junjun185576005 2012-08-22  
期待后续,不过图片好像没有。。

相关推荐

    单点登录SSO解决方案之SpringSecurity+JWT实现.docx

    ### 单点登录SSO解决方案之SpringSecurity+JWT实现 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On,简称SSO)是一种认证机制,允许用户仅通过一次登录就能访问同一域下的多个应用程序和服务。这种机制...

    单点登录sso

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。这种技术极大地提升了用户体验,减少了用户记忆和管理多套用户名和密码的负担,...

    单点登录SSO的实现原理

    单点登录SSO的实现原理 单点登录(SSO)是一种常见的技术实现原理,在多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。实现单点登录说到底就是要...

    单点登录 SSO 实例

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次认证即可访问多个相互关联的系统。在SSO系统中,客户端和服务端是两个关键组成部分。 客户端通常是指用户交互的...

    帝国cms oauth2.0 单点登录sso

    【标题】:“帝国cms oauth2.0 单点登录sso” 在IT行业中,单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户通过一次登录即可访问多个相互关联的应用系统,无需为每个系统分别进行认证。这里的...

    sso单点登录ppt.ppt

    sso单点登录ppt.ppt

    跨服务器登录验证(单点登录SSO)的过程和Java实现

    跨服务器登录验证(单点登录SSO)的过程和Java实现 跨服务器登录验证(单点登录SSO)是指用户只需要登录一次便可以访问多个相关的应用系统的机制。这种机制可以提高用户体验和系统安全性。下面我们将介绍跨服务器...

    单点登录SSO截HttpModel方法

    Asp.net 单点登录SSO截HttpModel方法;决对实用好用的源码。 网上有很多sso,多数都是共享cookie,而这个是用在同一个iis下,截取httpmodel,修改User.Identity,记录它为用户信息可以到处用。 当然你也可修改扩展。。...

    超全 Lotus Domino Xpages 开发资料——单点登录SSO的实现方式

    超全 Lotus Domino Xpages 开发资料——单点登录SSO的实现方式 大全通过分类提供给大家,请大家根据需要下载全开源, 并且一看就懂,不保留 https://blog.csdn.net/weijia3624/article/details/107013401

    EPBWECC配置单点登录SSO.doc

    文档"EPBWECC配置单点登录SSO.doc"详细阐述了如何在EP(Enterprise Portal)系统中配置与BW(Business Warehouse)和ECC(Enterprise Central Component)系统的单点登录(SSO, Single Sign-On)集成。以下是配置步骤的详细...

    跨服务器登录验证(单点登录SSO)的过程和Java实现.docx

    【跨服务器登录验证(单点登录SSO)】 单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一个系统中登录后,无需再次认证即可访问其他相互信任的系统。SSO简化了用户对多个系统的访问流程,提高...

    跨服务器登录验证(单点登录SSO)的过程和Java实现.doc

    【跨服务器登录验证(单点登录SSO)】 单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一个系统中登录后,无需再次认证即可访问其他相互信任的系统。SSO简化了用户对多个系统的访问流程,提高...

    跨服务器登录验证(单点登录SSO)过程和Java实现

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入认证信息。这种机制极大地提高了用户体验,减少了用户记忆多套账号密码的困扰,...

    java单点登录sso源码

    Java单点登录(Single Sign-On,SSO)是一种网络访问控制机制,允许用户在一次登录后,无需再次认证即可访问多个应用系统。SSO的核心思想是:用户只需要在一个可信的身份认证中心(Identity Provider,IdP)进行身份...

    单点登录SSO的参考资料

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户在一个系统上登录后,无需再次输入凭证即可访问多个相互关联的系统。SSO的主要目标是提高用户体验,减少用户记忆多个密码的负担,同时也能提高...

    discuz x2.5和cas集成,实现cas单点登录 sso

    X2.5与CAS(Central Authentication Service)集成是一种常见的身份验证解决方案,它能够实现单点登录(Single Sign-On, SSO)功能。在SSO系统中,用户只需登录一次,就可以在多个相互独立的应用系统之间自由切换,...

Global site tag (gtag.js) - Google Analytics