`
ruijf
  • 浏览: 69735 次
  • 性别: 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代理模式代码示例

    完成如下功能 1、实现代理模式的相关配置 2、实现获取pgt,通过pgt生成pt,调用被代理的服务 3、实现二次调用服务的最佳实践

    H3C_CAS_LINUX安装cas-tools

    CAS Tools 提供了多种管理功能,包括虚拟机监控、虚拟机配置、虚拟机 migraion 等。CAS Tools 支持多种虚拟化平台,包括 VMware、Hyper-V、KVM 等。 安装 CAS Tools 安装 CAS Tools 需要在 Linux 系统中执行以下...

    CAS单点登录的经典配置,以及多数据库的处理方案

    CAS单点登录的经典配置,以及多数据库的处理方案 CAS单点登录是Single Sign-On(SSO)的一种实现,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。CAS单点登录产品...

    cas-proxy认证

    cas-proxy配置相关文档,文档内含详细配置方式

    nginx反向代理导致session失效的问题解决

    两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass http://192.168.40.159:8081/health/; #无问题的配置 } location /health-dev/ { proxy_pass ...

    django+cas环境部署

    2.nginx反向代理elasticsearch,elasticsearch的访问端口为9200,采用nginx反向代理之后,当django中需要从elasticsearch中查询数据的时候只需要访问nginx的8081端口,为了保护elasticsearch的安全性在nginx中设置了...

    gocas:Golang 中的极简 CAS 服务器

    这里目前有效: 基本工作流程(/login、/validate、/serviceValidate) 信任身份验证(默认禁用) /logout(暂时没有 SLO) 准确的服务主机的简单白名单(通配符可能有一天会出现) REST API CAS代理简单实现中间件...

    connect-cas2:CAS(中央身份验证服务)客户端的NodeJS实现

    CAS(中央身份验证服务)是Web的单点登录/单点退出协议。 我们假设您已经熟悉CAS协议,如果不熟悉,请在使用前阅读本。 安装 npm install connect-cas2 特征 非代理模式CAS登录/注销 代理模式CAS登录/注销,获取...

    cas-java-client

    示例CASified Java Web应用程序这是一个示例Java Web应用程序,它通过Java CAS Client行使CAS协议功能。配置在文件中调整CAS服务器和应用程序服务器的url端点。 如果您希望执行代理身份验证,请在同一文件Cas20...

    Apache+多个Tomcat 服务器集群配置

    这里主要采用了代理的方法,就这么简单。 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so ...

    exchange 2013安装

    * 邮箱服务器角色(Mailbox Role):该角色用于存储用户邮箱数据,执行代理客户端连接到客户端访问服务器,以及处理统一消息请求。邮箱服务器可以使用 DAG 组成后端集群。 Exchange 2013 系统要求 在部署 ...

    grafana-authentication-proxy:Grafana 身份验证代理

    grafana 身份验证代理使用和 Express 在 Google OAuth2、基本身份验证或 CAS 身份验证背后最新的和 。 Elasticsearch、grafana 和用户客户端之间的代理支持基本认证保护的 Elasticsearch,只有 grafana-...

    spring in action英文版

    第一部分 Spring基础 ... 11.4.4 设置一个安全上下文  11.4.5 确保通道安全性  11.4.6 使用Acegi的标签库  11.5 保护方法调用  11.5.1 创建一个安全切面  11.5.2 使用元数据保护方法  11.6 小结

    java开源包4

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

    MaxKey单点登录认证系统-其他

    CAS地址优化统一配置到常量类CasConstants 注销空指针异常BUG OAuth2地址优化统一配置常量类OAuth2Constants OAuth2 Token多次调用时认证转换的BUG ExtendApi标准优化 增加基于时间签名的ExtendApi适配器 返回数据...

    spring security 参考手册中文版

    设置一个自定义的AuthenticationEntryPoint 64 6.4方法安全 64 6.4.1 元素 65 使用protect-pointcut添加安全性切入点 66 6.5默认AccessDecisionManager 67 6.5.1自定义AccessDecisionManager 67 6.6验证管理器和命名...

    云服务器数据安全保护软件项目询价文件.doc

    " "安全模式 "支持有代理和无代理两种模式的防病毒功能。能够对运 " " "行中进程和 I/O " " "事件实时病毒过滤;根据用户需求自定义扫描目录手动 " " "或计划病毒过滤,编辑扫描配置扫描范围、排除的文件 " " "和...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    myprofile:型材乔治

    因此,它提出了以下主要假设: 一台机器,如所述,基于“ 3Tomcat”的设置, 已配置为绑定到本地主机上的端口8180(代理/ cas),8280(所有其他webapp),8380(geoserver)的tomcat连接器, HTTP方案是主要方案...

    java开源包1

    PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是...

Global site tag (gtag.js) - Google Analytics