`
ruijf
  • 浏览: 71494 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

CAS代理服务配置(一)

 
阅读更多

公司准备上SSO,选用CAS框架。本人学习了N久,总算配成功了。下面记录下涉及的各个节点。

1.CAS的名词解释及原理
2.HTTPS的配置
3.CAS Proxy的配置

4.测试

一、CAS名词解释及原理
这些个东东比较拗口,很难解释。我是看了好久才勉强理解。这方面的知识网络上有很多,介绍几个大牛的博客给大家看下吧。
名词解释:http://blog.csdn.net/tienway/article/details/5464516
原理:http://blog.csdn.net/emon123/article/details/6285549
         http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html
官方wiki:https://wiki.jasig.org/display/CASC/CAS+Client+for+Java+3.1

二、HTTPS的配置
1.测试环境

cas-client-3.2.0

cas-server-3.4.10


cas server:         https://sso.test.com
backend service:  http://backend.test.com
proxy service:       http://proxy.test.com

host:
172.16.11.71   sso.test.com
172.16.11.72   backend.test.com
172.16.11.73   proxy.test.com

http端口默认80

https端口默认443

2.证书的生成
CAS Server和Proxy Service多需要使用HTTPS协议,因此需要生成2个证书。使用java自带的命令生成
cas server:     keytool -genkey -alias cas_server -keystore cas_server.keystore -keyalg RSA -validity 3666
proxy service:keytool -genkey -alias proxy_service -keystore proxy_service.keystore -keyalg RSA -validity 3666
生成证书时的域名(第一个输入项)要和测试的域名匹配。比如cas server要输入sso.test.com, proxy service要输入proxy.test.com

3.tomcat配置
配置conf/server.xml

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" URIEncoding="utf-8" keystoreFile="conf/cas_server.keystore" keystorePass="changeit" />

配置好后重启tomcat,打开浏览器验证下。如果出现红框,点击信任。如果能进入页面就OK了。因为这些证书是不受浏览器信任的,每次会提示安全信息。可以设置下将证书导出到信任列表里,就不会每次提醒了。IE的选择安装证书一路OK就行了。

 

4.证书信任

CAS代理验证模式下cas server和proxy service会后台互相调用https接口。因此需要配置jvm信任彼此的证书。不然

会报PKIX啥的异常.

首先在sso.test.com将cas server的证书导出

keytool -export -alias cas_server -keystore cas_server.keystore -file cas_server.crt

然后将cas_server.crt拷贝到proxy.test.com机器上导入jvm

keytool -import -alias cas_server -file cas_server .crt -keystore $JAVA_HOME/jre/lib/security/cacerts

同理 再将proxy.test.com上proxy_service的证书导入sso.test.com的jvm

 

现在先期的HTTPS配置工作完成了。

 

三、CAS Proxy配置

proxy service配置:

 

	<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>/*</url-pattern>
	</filter-mapping>
	<listener>
		<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
	</listener>

	<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://sso.test.com/login</param-value>
		</init-param>
		<init-param>
			<param-name>renew</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>gateway</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://proxy.test.com</param-value>
		</init-param>
	</filter>

	<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://sso.test.com/</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://proxy.test.com</param-value>
		</init-param>
		<init-param>
			<param-name>exceptionOnValidationFailure</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>redirectAfterValidation</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>acceptAnyProxy</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>useSession</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>proxyCallbackUrl</param-name>
			<param-value>https://proxy.test.com/proxyCallback</param-value>
		</init-param>
		<init-param>
			<param-name>proxyReceptorUrl</param-name>
			<param-value>/proxyCallback</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>CAS Validation Filter</filter-name>
		<url-pattern>/proxyCallback</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>CAS Authentication Filter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>CAS Validation Filter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>

 

说明:

1.具体参数意义参见http://blog.csdn.net/tienway/article/details/5464516

2./proxyCallback这个接口原先yelu的jar包是单独的,cas_client_core是合并在

Cas20ProxyReceivingTicketValidationFilter类中。这个差别让我郁闷了很久。

3.过滤器的顺序不能乱了,前置的/proxyCallback官方没有这样的配置,这个得感谢(emon123)

http://blog.csdn.net/emon123/article/details/6285549

4.backend service配置同理

 

分享到:
评论

相关推荐

    cas代理模式代码示例

    在这个"cas代理模式代码示例"中,我们关注的是如何在CAS环境中实现这一模式。 1、**实现代理模式的相关配置**: 在Java中,我们可以使用静态代理或者动态代理(如Java的`java.lang.reflect.Proxy`类)来实现。静态...

    CAS代理模式

    CAS代理模式是CAS协议中的一个重要特性,它允许授权的用户代表其他用户执行操作,例如在教育和研究环境中,教师可以访问学生的信息或提交作业代为批改。 在Yale CAS实现中,代理模式主要涉及以下几个核心概念: 1....

    CAS代理服务

    5. **CAS代理模式**:CAS支持代理模式,允许一个服务代表用户向另一个服务请求认证,这在多服务环境中非常有用。 6. **源码分析**:提供的源码示例可以帮助理解CAS的内部工作机制,包括登录、验证、服务票证的生成...

    cas 系统实例 服务端配置(一)

    标题 "cas 系统实例 服务端配置(一)" 提到的是 CAS(Central Authentication Service)系统的一个服务端配置教程。CAS 是一个开源的身份验证框架,主要用于实现单一登录(Single Sign-On, SSO)。在本教程中,我们...

    cas-proxy认证

    1. **CAS 服务器配置**:需要在 CAS 服务器端启用代理认证的相关设置。 2. **客户端配置**:客户端应用需要正确配置以支持代理认证。 3. **HTTPS 配置**:确保所有涉及 CAS-Proxy 认证的通信均通过 HTTPS 进行。 4. ...

    cas客户端登陆配置文档

    这通常涉及下载CAS服务器的软件包,配置服务器的主配置文件(如`cas.properties`),以及设置服务器的Keystore来生成SSL证书,确保通信的安全性。 2. **选择客户端库**:CAS提供了多种客户端库,例如Java、.NET、...

    简单配置基于CAS的单点登录

    标题中的“简单配置基于CAS的单点登录”指的是在IT领域中实现的一种身份验证方法,称为Central Authentication Service(中央认证服务)的单点登录(Single Sign-On, SSO)。CAS是一种开源项目,它允许用户通过单一...

    CAS的ASP.NET客户端配置及验证

    在ASP.NET环境中配置CAS客户端可以帮助开发者构建一个允许用户通过单一登录凭证访问多个应用系统的平台。本篇文章将深入探讨如何在ASP.NET应用程序中配置CAS客户端,并进行验证流程。 首先,理解SSO的基本概念是至...

    cas-demo.rar_.net cas demo_CAS_CAS点登录配置文档_DEMO_cas .net

    CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源身份验证框架,主要目的是提供单一登录(Single Sign-On,SSO)功能。在这个“cas-demo.rar”压缩包中,包含了一个.NET实现的CAS客户端...

    自定义客户端登录CAS服务器-iframe实现

    1. CAS协议理解:首先,你需要熟悉CAS的工作流程,包括票证(Ticket)的概念,如服务票证(Service Ticket)和代理票证(Proxy Ticket),以及它们在认证过程中的作用。 2. CAS服务器配置:部署和配置CAS服务器,...

    CAS(Central Authentication Service、中央认证服务)

    CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源身份验证框架,主要目的是提供单一登录(Single Sign-On,SSO)功能。它允许用户通过一个认证界面登录,然后在多个应用系统之间无缝地切换...

    cas实现单点登录,登出(java和php客户端)

    配置包括设置CAS服务器地址、服务URL、票证验证URL等。同时,需要处理CAS过滤器,确保用户请求被正确地重定向到CAS服务器进行身份验证。 对于PHP客户端,可以使用phpCAS库。同样需要配置CAS服务器URL、服务URL等...

    cas java cas java 实例

    - 在配置文件中设置CAS服务器的URL、服务ID(对应你的应用)和其他相关参数。 - 定义一个过滤器,通常称为`CasAuthenticationFilter`,该过滤器负责拦截请求,引导用户到CAS服务器进行身份验证,并处理验证结果。 ...

    cas客户端jar包

    3. **初始化客户端**:在应用启动时,初始化CAS客户端,设置服务器地址和服务URL等参数。 4. **处理重定向**:当用户尝试访问受保护的资源时,客户端会检测到缺失的CAS票证并自动重定向到CAS服务器的登录页面。 5. *...

    CAS(SSO)-.zip_CAS_CAS SSO_java sso_sso java

    CAS(Central Authentication Service,中央认证服务)是Java社区开发的一个开源SSO解决方案,它为Web应用提供了统一的认证和授权服务。 CAS的核心概念包括以下几个部分: 1. **CAS服务器**:这是SSO的核心,负责...

    django+cas环境部署

    本系统的搭建充分利用了Django强大的开发能力、Nginx优秀的反向代理性能、Elasticsearch高效的搜索服务、CAS的安全认证机制以及MySQL稳定的数据存储功能。通过精心设计和配置,实现了高度集成化的分布式应用环境。这...

    CAS单点登陆配置手册

    4. 在重定向过程中,CAS Server还会设置一个Ticket Granting Cookie (TGC)。TGC用于后续的无感知登录。 5. CAS Client接收到ST后,会与CAS Server进行验证,以确认ST的有效性。 6. 验证通过后,用户即可访问受保护的...

    单点登入--CAS3.0

    - CAS服务器的部署涉及配置XML文件,如`cas-server-config.xml`,设置服务器地址、数据库连接、票证过期策略等。 - 应用系统需要集成CAS客户端库,配置服务URL和CAS服务器地址,以便进行票据交换和验证。 **安全性...

    使用CAS在Tomcat中实现单点登录参考代码及配置

    - **代理支持**:CAS除了基本的单点登录功能外,还支持代理机制,即允许一个服务代表另一个服务获取票证。这种功能非常适合需要跨服务共享身份验证信息的场景。 - **多因素认证**:随着安全性的提升,CAS也支持多...

Global site tag (gtag.js) - Google Analytics