读书人

cas与tomcat简略搭建SSO

发布时间: 2013-07-25 16:22:17 作者: rapoo

cas与tomcat简单搭建SSO

?????????? enableLookups="true" disableUploadTimeout="true"

?????????? acceptCount="100"? maxThreads="200"

?????????? scheme="https" secure="true" SSLEnabled="true"

?????????? keystoreFile="keystore/server.keystore" keystorePass="123456"

?????????? clientAuth="false" sslProtocol="TLS"/>

注意:

????? 1)keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文件。

????? 2)keystorePass就是刚才生成certificate keystore的密码。

3)测试Https。访问https://localhost:8443/,提示有不安全的证书,接受证书,看到可亲的tom猫

4)访问的时候localhost最好换成你的主机名。

至此SSL协议配置结束。

4、搭建CAS的服务端
4.1? CAS在tomcat上的发布

1)将下载的cas-server-3.3.3-release.zip解压

2)将解压包内的modules文件夹下的cas-server-webapp-3.3.3.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war

可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。

5、??????? 搭建CAS客户端
1、????????? 配置客户端服务器的HTTPS协议方法同服务端。

2、????????? 客户端的安装

1)????????? 将cas-client-java-2.1.1.zip解压并将\cas-client-java-2.1.1\dist下的casclient.jar拷贝到你所要应用的项目的WEB-INF\lib目录下

2)????????? 将\cas-client-java-2.1.1\lib下的所有包copy到WEB-INF\lib目录下

3、????????? 密钥的交换。

1)????????? 服务端密钥的导出

C:\Documents and Settings\administrator>keytool -export -file client.cert -alias mykey -keystore server.keystore

2)????????? 客户端密钥的导入

将导出的client.cert密钥copy到客户端机器上在客户端机器上运行

keytool -import -trustcacerts -file client.cert -keypass changeit -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -alias mykey1

注意:

导入的部位是

JAVA_HOME的jre目录下,不是跟jdk同级的jre目录
例如: C:/Program Files/Java/jdk1.6.0_03/jre/lib/security/cacerts

4、????????? 配置文件的修改

1)????????? 修改webapps\examples\WEB-INF\web.xml,加入servlet filter实现SSO检查。

注:该web.xml为你要加入SSO功能的项目下的web.xml文件,本示例为使用tomcat下自带的example项目

<filter>

??????? <filter-name>CASFilter</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://cas02.com.cn:8443/cas/login</param-value>

??????? </init-param>

??????? <init-param>

??????? <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>

??????? <param-value>https://cas02.com.cn:8443/cas/proxyValidate</param-value>

??????? </init-param>

??????? <init-param>??????

???????????? <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>

??????????? <param-value>cas02.com.cn:8080</param-value>

??????? </init-param>

??????? <init-param>

??????? <param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>

??????? <param-value>true</param-value>

??????? </init-param>

?? </filter>

?????? <filter-mapping>

??????? <filter-name>CASFilter</filter-name>

?????? <url-pattern>/*</url-pattern>

</filter-mapping>

注意:本测试案例的服务端与客户端在同台机器下所以地址栏中全使用了同一主机名,如客户机与服务机在不同机器上,则第一二两个表红色的主机名要换成服务机的主机名,第三个标蓝色的主机名为客户机的主机名。

6、??????? 测试SSO
1)通过IE访问http://主机名:8080后进入TOMCAT页面后选择example会跳转到CAS得登录面输入相同的用户名密码进入example的登录后页面,至此该简单的SSO结束


CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。

在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。

另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。

?


原文来自:雨枫技术教程网 http://www.fengfly.com
原文网址:http://www.fengfly.com/plus/view-172235-1.html

?

读书人网 >行业软件

热点推荐