`
jsczxy2
  • 浏览: 1284944 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

[转]单点登录SSO:使用casserver

    博客分类:
  • java
阅读更多

 

CAS SSO 例子 笔记 (原创-梁健)

先说写心情一下:

去年在第一家公司做的那个项目使用是CAS SSO单点登录,但是由于不是我做的那块,所以一直没有太深入的研究,这段日子比较闲,从新学习一下CAS SSO单点登录吧,门户网站等大型网站都会用的到的,所以这的确是个不可缺少的技术。这两天在配置CAS SSO的时候遇到了很多的问题,虽然有过无助,但坚持一下别放弃,最终总会弄成功的!

-------------------------------------------------------------------------------------------------------------------------------

列一列遇到问题的过程:

先是:Tomcat配置完https后,启动报错。

然后就是:正常启动,但是无法跳转到CAS登录页面,也无法以https访问。

再就是:可以正常跳转到CAS的登录页面,但点击登录后,跳转到成功页面的时候报500错误,说没有导入证书。

-------------------------------------------------------------------------------------------------------------------------------

网上找了好多的资料,但是几乎都配置不成功,不是缺这个就是少那个。这里我就写写我的笔记,绝对保证你能够配置成功!好了,心情就说到这吧,总之成功的那一刻心情是很爽的。

 

转载请注明出处:http://liangjian103.iteye.com/blog/1129056

 

需要介质
1、 客户端介质cas-client-2.0.11.zip

2、 服务端介质cas-server-3.4.8-release.zip

3、 Tomcat6.0

4、 jdk1.5.0_12

下载地址:

http://downloads.jasig.org/cas-clients/

http://downloads.jasig.org/cas/

将cas-server-3.4.8-release.zip\cas-server-3.4.8\modules下的cas-server-webapp-3.4.8.war拷贝到Tomcat的webapp目录下,重命名为cas.war

一、服务端配置(以下配置我已经写了批处理。):
修改Tomcat的密码为:changeit,因为下面统一都用的这个密码。

tomcat-users.xml
<user username="admin" password="changeit" roles="admin,manager"/>

由于CAS只能识别域名,所以只能修改C:\WINDOWS\system32\drivers\etc\hosts,加入:127.0.0.1 sso.tomcat.com
由于以下我使用批处理实现,也就不需要一步步的回车设置证书的信息了:
服务端凭证要配置域名 例如:CN=sso.tomcat.com 此处为hosts中配置的。这个名字要与下面配置客户端的web.xml中的过滤器里写到的一致,下面会再做解释。 

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set TOMCAT_HOME=D:\Program Files\Apache Software Foundation\Tomcat 6.0

set SERVER_DN="CN=sso.tomcat.com, OU=share, O=share, L=sz, S=gd, C=CN"
set KS_PASS=-storepass changeit

keytool -delete -alias tomcat -file client.cert %KS_PASS% -keystore server.keystore 
keytool -delete -alias tomcat1 -trustcacerts -file client.cert %KS_PASS% -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -keypass changeit

keytool -genkey -alias tomcat -keyalg RSA -keystore server.keystore -dname %SERVER_DN% %KS_PASS% -keypass changeit
keytool -export -alias tomcat -file client.cert %KS_PASS% -keystore server.keystore 
keytool -import -alias tomcat1 -trustcacerts -file client.cert %KS_PASS% -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -keypass changeit -noprompt

mkdir "%TOMCAT_HOME%\keystore\"
copy server.keystore "%TOMCAT_HOME%\keystore\"

@echo off

echo "-----------------------------------------------------------"

echo 请配置%TOMCAT_HOME%\conf\server.xml文件。

echo "<Connector protocol=org.apache.coyote.http11.Http11NioProtocol"
echo "port=8443 minSpareThreads=5 maxSpareThreads=75"
echo "enableLookups=true disableUploadTimeout=true"
echo "acceptCount=100 maxThreads=200"
echo "scheme=https secure=true SSLEnabled=true"
echo "clientAuth=false sslProtocol=TLS"
echo "keystoreFile=keystore/server.keystore keystorePass=changeit"
echo "/>"

echo 当前JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
echo 当前TOMCAT_HOME=D:\Program Files\Apache Software Foundation\Tomcat 6.0
echo 证书位置:%TOMCAT_HOME%\keystore\server.keystore

echo 以上为CAS服务端的配置。接下来配置SSO客户端。

echo "-----------------------------------------------------------"
color 3
echo. && pause

 

保存为:生成证书配置.bat,双击执行。

修改Tomcat 6.0\conf\server.xml文件:

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true" 
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="keystore/server.keystore" keystorePass="changeit"
/>

 

这个配置也是困扰我好长时间,但最终测试通过了的。

这里需要注意,这个分别为证书的路径和密码,keystore/server.keystore这个目录和文件会在上面的批处理中创建,密码默认为:"changeit"

keystoreFile="keystore/server.keystore" keystorePass="changeit"

 

二、客户端配置:
在你的应用中,修改web.xml文件,加入SSO过滤器

<!-- SSO-Start -->
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://sso.tomcat.com:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://sso.tomcat.com:8443/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>192.168.9.203:8080</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- SSO-END -->

启动Tomcat服务,访问一下你SSO过滤的页面便可以跳转到CAS的登录页面。登录成功后,会自动跳转到目标页面。如果A应用和B应用都加入了SSO过滤器,这样,他们就都会跳转到CAS认证服务器去登录,当其中一个应用在CAS上登录后,另一个应用则会自动登录。

----------------------------------------------------------

以下是本人总结的思路:

 

1、用户访问需要登录的页面时,跳转到登录域进行登录。

 

2、登录完毕后,带着登录成功的token(这个token可以是任何能唯一标识一个登录用户的东西,比如uuid,通过url参数传递,因为这样才能跨域)返回原来的页面。

 

3、原来的页面通过url取到这个token之后,去数据源中验证这个token是否合法,如果合法那么接下来跟普通登录一样设置cookie、session等各种登录状态就行了。

 

PS:附件是工程实例

 

分享到:
评论

相关推荐

    落雨博客基于CAS框架的单点登录技术讲解(ppt+code实例+doc)配套资料

    [置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) http://blog.csdn.net/ae6623/article/details/8851801 [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas...

    单点登录sso-shiro-cas-maven

    spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...

    Java进阶SSO单点登录技术CAS-快速上手与原理探究视频教程

    本课程主要通过CAS来实现SSO,本教程会从最基本的基础知识讲起,由浅入深再到实战,完成多应用的单点登录功能。 本课程内容如下: 1、 什么是SSO和CAS 2、 CAS Server服务端和客户端的搭建和配置 3、 单点登录和单...

    Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc

    Weblogic 使用 YALE CAS 实现 SSO 单点登录的方法 一、Yale CAS 简介 Yale CAS 是耶鲁大学开发的一种开源的单点登录(SSO)解决方案,提供了一个通用的身份验证框架,允许用户使用单个身份验证来访问多个应用程序。...

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

    CAS(Central Authentication Service)是 Yale 大学发起的一个开源项目,它提供了一种在Web 应用中统一处理用户认证的解决方案,被称为单点登录(Single Sign-On,简称SSO)。SSO允许用户在一个系统中登录后,无须...

    CAS单点登录(SSO)教程

    ### CAS单点登录(SSO)教程详解 #### 前言 随着企业信息化建设的不断发展,用户需要在多个系统之间切换并重复登录的情况越来越常见,这不仅降低了用户体验,还增加了管理成本。为了解决这一问题,单点登录(Single ...

    SSO之CAS单点登录实例演示

    通过"SSO之CAS单点登录实例演示",我们可以实践这些步骤,了解如何设置和运行一个基本的CAS环境,进一步理解SSO的工作原理和实际应用。这个实例将帮助我们更好地掌握如何为自己的应用实现SSO功能,提升系统的安全性...

    cas-server sso单点登录服务端

    总的来说,CAS-server SSO服务端是一个强大的工具,它为企业提供了一种高效、安全的单点登录解决方案。理解其工作原理和配置方法对于构建和维护一个统一的认证环境至关重要。通过深入学习和实践,我们可以利用"cas-...

    用CAS实现框架的SSO单点登录

    在用户访问其他关联应用时,如果TGC有效且未过期,CASServer将直接使用TGC进行认证,从而实现了单点登录的功能。若TGC过期或无效,则用户需要重新进行认证过程。 #### CAS服务器接口配置 为了实现CAS单点登录,...

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。本压缩包提供了CAS服务端自定义认证的实现,以及CAS客户端的配置...

    sso/cas单点登录Java maven版 含服务端客服端

    SSO(Single Sign-On)是单点登录的缩写,是一种网络用户身份验证的机制,允许用户在一次登录后访问多个应用系统而无需再次验证。CAS(Central Authentication Service)是SSO的一种实现,由耶鲁大学开发并开源,它...

    SSO单点登录

    ### SSO单点登录原理及CAS Server配置详解 #### 一、SSO简介 SSO(Single Sign-On,单点登录)是身份管理领域的重要组成部分,它允许用户在一个应用程序中进行一次身份验证后,无需再次登录即可访问同一组织内其他...

    CAS_SSO单点登录实例详细步骤

    【CAS_SSO单点登录实例详细步骤】 单点登录(Single Sign-On,简称SSO)是一种网络认证机制,允许用户在一个应用系统中登录后,无需再次输入凭证即可访问多个相互信任的应用系统。CAS(Central Authentication ...

    java单点登录sso源码

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

    SSO之CAS单点登录

    综上所述,SSO之CAS单点登录提供了一种高效、安全的身份验证解决方案,简化了用户访问多应用的流程,同时也便于管理员管理和监控用户行为。对于大型组织,采用CAS进行SSO集成可以显著提升用户体验并加强信息安全。在...

    cas server sso 单点登录服务端

    CAS(Central Authentication Service)服务器是一种基于Java的开源单点登录(Single Sign-On,简称SSO)框架,旨在简化用户在多个应用系统之间的身份验证过程。SSO允许用户在一个地方进行登录,然后在整个会话期间...

    cas单点登录server端代码

    CAS(Central Authentication Service)是基于Java的开源身份验证框架,主要功能是实现单点登录(Single Sign-On,简称SSO)。SSO允许用户通过一次登录,就能访问多个应用系统,无需再次输入凭证,大大提升了用户...

    开源ITSM工具itop接入单点登录框架cas实现步骤.docx

    现在,可以登录iTop,使用CAS单点登录框架来验证用户身份。 常见问题 在实现iTop与CAS集成时,可能会遇到一些问题,例如CAS Server未部署完成、iTop配置文件修改错误等。为了避免这些问题,可以按照上述步骤逐步...

    单点登录demo

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统或应用中登录后,无需再次输入凭证即可访问其他相互信任的系统或应用。它简化了用户管理和提升了用户体验,同时减少了密码管理的...

Global site tag (gtag.js) - Google Analytics