- 浏览: 96948 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhuce_4521:
谢谢分享!
Spring数据库事务 -
xh584990686:
感谢分享 经典~~~~~
CAS单点登录系列(5)-简单实施SSO之二 -
huze104:
1,memcached是什么?memcached服务器和客户端 ...
Memcached Linux安装部署 -
huze104:
DataImportHandler 最大的优点是基本不用写代码 ...
Solr 3.5 入门配置应用 -
yangpeihai:
谢谢分享,受益匪浅,不过上面到xml代码怎么都是重复的!
CAS单点登录系列(3)-简单实施SSO
默认时,为了启用Web SSO,开发者必须开启HTTPS传输通道。由于传回CASTGC Cookie到CAS服务器需要走HTTPS通道,因此开发者必须准备好X.509 CA证书。当然,您也可以选择修改这一默认行为,但从安全性的角度考虑,不推荐这样做。
1.使用keytool生成根证书
1.1.查看jre信任的证书
(1)查看jre中所有信任的证书信息
keytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
(2)查看别名为root的证书信息
keytool -v -list -alias root -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
1.2.删除jre中别名为root的证书
keytool -delete -alias root -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
1.3.开始生成根证书
确认jre中不存在别名为root的证书之后,我们开始生成根证书。
(1)生成密钥库文件root.keystore
keytool -genkey -keyalg RSA -alias root -dname " CN=localhost, OU=javaeeOU, O=javaee, L=GuangZhou, ST=GuangDong, C=CN" -storepass changeit -keystore root.keystore
使用默认密码,直接回车。
(2)导出别名为root的证书,证书名root.crt
keytool -export -alias root -file root.crt -storepass changeit -keystore root.keystore
(3)将证书导入到jre信任证书库中
keytool -import -alias root -file root.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
(4)查看别名为root的证书信息,确认成功导入到jre信任证书库中
keytool -v -list -alias root -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
2.启用HTTPS
2.1.在Tomcat中启用HTTPS配置
打开Tomcat目录下的conf/server.xml文件,添加Connector代码如下:
- <SPAN style="FONT-SIZE: small"><Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" minSpareThreads="2" maxSpareThreads="10"
- scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile="conf/root.keystore" keystorePass="changeit"
- truststoreFile="E:/DevelopTools/JDK/jdk1.5.0_10/jre/lib/security/cacerts" /></SPAN>
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" minSpareThreads="2" maxSpareThreads="10"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/root.keystore" keystorePass="changeit"
truststoreFile="E:/DevelopTools/JDK/jdk1.5.0_10/jre/lib/security/cacerts" />
其中:
keystoreFile指向密钥库文件root.keystore
keystorePass默认为changeit
truststoreFile指向jre信任的证书库文件
2.2.安装证书
启动Tomcat,访问地址:https://localhost:8443/cas3,浏览器将会返回证书错误界面:
单击“继续浏览此网站(不推荐)”链接,查看并将证书导入到浏览器中:
单击“查看证书”,弹出证书安装界面:
单击“安装证书”,进入证书导入向导界面:
选择“受信任的根证书颁发机构”,接下来只需要一路选择“下一步”或者“是”直至导入成功。
证书导入成功后,重新浏览器并访问地址:https://localhost:8443/cas3,将会看到类似于下图的锁图标,并可单击该图标查询证书信息,这表示证书已安装成功,正确启用了HTTPS。
3.对Web应用实施SSO
Web应用采用Tomcat自带的servlet例子Hello World,默认访问路径为http://localhost:8080/examples/servlets/servlet/HelloWorldExample。在没有对该servlet实施SSO之前,启动Tomcat后访问结果如下图所示:
接下来,我们将对该servlet实施SSO,配置步骤如下:
3.1.添加Cas Client相应Jar包
只需要添加两个Jar包:cas-client-core-3.1.10.jar、commons-logging-1.0.4.jar,将其拷贝到Tomcat安装目录下的webapps\examples\WEB-INF\lib目录下。
3.2.配置web.xml文件
对于Cas Client在web.xml文件中的配置,主要包括两个方面,一个是过滤器的配置,另一个是监听器的配置。
3.2.1.过滤器配置
主要有以下5个过滤器:
1.SingleSignOutFilter
2.AuthenticationFilter
3.TicketValidationFilter (whichever one is chosen)
4.HttpServletRequestWrapperFilter
5.AssertionThreadLocalFilter
对于这5个过滤器,在web.xml中的配置必须严格按照以上顺序进行声明。
其中,AuthenticationFilter、TicketValidationFilter是必须配置的,其他3个过滤器是可选的。特别的,如果配置了SingleSignOutFilter,必须配合SingleSignOutHttpSessionListener这一监听器进行使用。
3.2.1.1.SingleSignOutFilter
该过滤器用于实现单点登出功能,可选配置。配置如下:
- <filter>
- <filter-name>CAS Single Sign Out Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.session.SingleSignOutFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>CAS Single Sign Out Filter</filter-name>
- <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
- </filter-mapping>
<filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class> org.jasig.cas.client.session.SingleSignOutFilter </filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern> </filter-mapping>
3.2.1.2.AuthenticationFilter
该过滤器负责用户的认证工作,必须启用它。配置如下:
- <filter>
- <filter-name>CAS Authentication Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.authentication.AuthenticationFilter
- </filter-class>
- <init-param>
- <param-name>casServerLoginUrl</param-name>
- <param-value>https://localhost:8443/cas3/login</param-value>
- </init-param>
- <init-param>
- <param-name>serverName</param-name>
- <param-value>localhost:8080</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>CAS Authentication Filter</filter-name>
- <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
- </filter-mapping>
<filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class> org.jasig.cas.client.authentication.AuthenticationFilter </filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://localhost:8443/cas3/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>localhost:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern> </filter-mapping>
3.2.1.3.TicketValidationFilter
该过滤器负责对Ticket的校验工作,必须启用它。配置如下:
- <filter>
- <filter-name>CAS Validation Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
- </filter-class>
- <init-param>
- <param-name>casServerUrlPrefix</param-name>
- <param-value>https://localhost:8443/cas3</param-value>
- </init-param>
- <init-param>
- <param-name>serverName</param-name>
- <param-value>localhost:8080</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>CAS Validation Filter</filter-name>
- <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
- </filter-mapping>
<filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter </filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://localhost:8443/cas3</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>localhost:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern> </filter-mapping>
3.2.1.4.HttpServletRequestWrapperFilter
该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。配置如下:
- <filter>
- <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.util.HttpServletRequestWrapperFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
- <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
- </filter-mapping>
<filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter </filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern> </filter-mapping>
3.2.1.5.AssertionThreadLocalFilter 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。比如AssertionHolder.getAssertion().getPrincipal().getName()。配置如下:
- <filter>
- <filter-name>CAS Assertion Thread Local Filter</filter-name>
- <filter-class>
- org.jasig.cas.client.util.AssertionThreadLocalFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>CAS Assertion Thread Local Filter</filter-name>
- <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
- </filter-mapping>
<filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class> org.jasig.cas.client.util.AssertionThreadLocalFilter </filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern> </filter-mapping>
3.2.2.监听器配置
当配置了SingleSignOutFilter过滤器,即对Web应用实施单点登出功能时,需要在web.xml中添加以下监听器:
- <listener>
- <listener-class>
- org.jasig.cas.client.session.SingleSignOutHttpSessionListener
- </listener-class>
- </listener>
<listener> <listener-class> org.jasig.cas.client.session.SingleSignOutHttpSessionListener </listener-class> </listener>
- filter和listener代码.zip (538 Bytes)
3.2.3.启动应用
配置完成后,重新启动Tomcat,并访问地址http://localhost:8080/examples/servlets/servlet/HelloWorldExample,由于该servlet已受到Cas的保护,所以我们会被引导到Cas登录页面。
只有通过Cas认证,才能真正的访问到http://localhost:8080/examples/servlets/servlet/HelloWorldExample这个servlet。
发表评论
-
CAS单点登录系列(5)-简单实施SSO之二
2010-10-22 15:47 2009在本系列文章的第3篇中,讲解了使用CAS实施单点登录 ... -
CAS单点登录系列(4)-使用RDBMS认证
2010-10-22 15:46 995在实际应用中,用户认证信息一般会存放在RDBMS或LDA ... -
CAS单点登录系列(2)-初步认识CAS
2010-10-22 15:02 12451.CAS介绍 CAS(Central Authenti ... -
CAS单点登录系列(1)-基础知识
2010-10-22 14:59 12261.单点登录 1.1.概述 ... -
cas 单点登录配置速成
2010-06-22 21:51 1619原理描述 子系统所有请求被CAS过滤器拦截(web.xml中定 ... -
Acegi安全系统详解
2010-06-22 17:56 802Acegi是Spring Framework 下最 ... -
应用J2EE构建项目登录方式的改进设计与实现
2010-06-22 17:52 669j2ee是当前建立和开发各 ... -
SSO技术简介
2010-06-22 17:51 739SSO(Single Sign-On,单点登录)是身份 ... -
单点登陆系统SSO原理
2010-06-22 17:50 726本文以某新闻单位多媒体数据库系统为例,提出建立企业用户认证中心 ... -
浅谈Acegi配置
2010-06-22 17:49 645Acegi是基于Spring的一个开源的安全认证框架,现在的 ... -
CAS logout问题释疑
2010-06-22 17:48 1026CAS Logout是一个非常费解的问题,广州UG版,网友不停 ... -
acegi 作为 yale cas认证服务器的客户端在springside项目中的应用
2010-06-22 17:47 843First, Set SpringSide's web.xm ... -
部署cas服务器实现定制JDBC验证
2010-06-22 17:22 9671 安装 1.1系统配置 以下的软件环境是必需的: 1. ... -
yale cas 配置
2010-06-22 17:20 966在配置YALE 的CAS里面,走 ... -
Yale cas安装
2010-06-22 16:59 735看了网上很多CAS安装的 ... -
CAS安全性介绍
2010-06-22 16:57 774CAS 的安全性是一个非常重要的 Topic 。 CAS 从 ... -
Yale CAS实现原理及其基础协议
2010-06-22 16:40 930CAS(Central Authentication Serv ...
相关推荐
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...
本课程主要通过CAS来实现SSO,本教程会从最基本的基础知识讲起,由浅入深再到实战,完成多应用的单点登录功能。 本课程内容如下: 1、 什么是SSO和CAS 2、 CAS Server服务端和客户端的搭建和配置 3、 单点登录和单...
spring boot整合spring security 实现SSO单点登陆 完整DEMO. 1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource 127.0.0.1 sso-tmall 127.0.0.1 sso-taobao windows系统的路径在C:\WINDOWS\system...
NULL 博文链接:https://zhanjia.iteye.com/blog/737592
NULL 博文链接:https://zhanjia.iteye.com/blog/746437
单点登录 sso cas带超详细文档,包含(cas-server-webapp-4.0.0.war、c3p0-0.9.1.2.jar、cas-client-core-3.3.3.jar、cas-server-support-jdbc-4.0.0.jar、cas-server-webapp-support-4.0.0.jar、commons-logging-...
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication ...
sso/cas单点登录Java maven版 含服务端客服端
NULL 博文链接:https://572327713.iteye.com/blog/2356519
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
CAS实现sso单点登录原理,可以方便技术人员理解
discuz x2.5和cas集成,实现cas单点登录 SSO , php-5.2.14-Win32,Apache 2 2 ,PHPnow-1.5.6
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS(Central Authentication ...
[置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) http://blog.csdn.net/ae6623/article/details/8851801 [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas...
单点登录(SingleSignOn-SSO)完整案例Java语言运行特点:与平台无关,一次编写处处运行,SSO 的分类介绍的实现(同域、跨域)
SSO之CAS单点登录详细教程+CAS服务端jar+CAS服务端应用+客户端jar
CAS 单点登录 HTTP协议 配置指南 SSO CAS 单点登录 HTTP协议 配置指南 SSO CAS 单点登录 HTTP协议 配置指南 SSO
因为公司要实现SSO单点登录的效果,最近在网上找了一些资料,但是都没有好用的, 所以自己用PHP 使用TP5.0 实现了SSO单点登录,可以跨多个域名。 下载后在本地配置好 A,B,C 3个网站,就可以模拟效果了。
SSO之CAS单点登录详细教程.docx