[学习] 使用 CAS 实现 SSO 实践过程
来源:互联网 发布:tableau是什么软件 编辑:程序博客网 时间:2024/05/29 21:18
前一段时间曾经研究过一段关于 SSO 的技术,也深知 SSO(Single Sign-On) 是一个博大精深的主题,而我们通常提起的仅仅是所谓的 WebApp SSO,其主要特点是SSO 应用之间走Web协议 ( 如 HTTP/SSL) ,并且 SSO 都只有一个登录入口,SSO 的核心就是所谓的单点登录和身份认证。
CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。对这些统计,我虽然不以为然,但有一点可以肯定的是,CAS 是我认为最简单实效,而且足够安全的 SSO 选择。前一段时间正好做了配置 CAS 的实践,记下主要步骤,以供日后参考。
1.系统配置
以下是必需的软件环境:
1. JDK 1.4.2 or higher
2. Tomcat 5.X
3. JSSE-1_X(安装方法可见下载包)
2. Tomcat 配置,启用SSL
a. 在要安装CAS的机器上为Tomcat生成用于SSL通讯的密钥:%JAVA_HOME%/bin/keytool -genkey -alias tomcat -keyalg RSA
这时需要输入密钥密码和其他参数(第一个参数CN必须设置为CAS机器名,这里架设为 james-huang,本机使用localhost测试),会在系统用户目录中生成.keystore密钥文件。
b. 导出别名为tomcat的密钥文件:%JAVA_HOME%/bin/keytool -export -file /path/server.crt -alias tomcat 这时需要输入上一步设定的密码,结果会在/path/目录生成server.crt信任状。
c. 为客户端的JVM导入密钥::%JAVA_HOME%/bin/keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file /path/server.crt -alias tomcat 注意:输入密码时密码为"changeit",这是默认密码。
d. 修改服务端Tomcat配置文件,启用SSL:修改$CATALINA_HOME/conf/server.xml,去掉有关SSL的那一段的注释,需要在connector字段中加 keystorePass="password"(password即为1、2步中的密码),keystoreFile="keystorePath"(可以把第一步生成的.keystore复制到$CATALINA_HOME/conf/下,这样keystoreFile="conf/.keystore")。重启Tomcat,测试 https://james-huang:8443 是否可以访问(推荐将服务器填上Server的机器名)。
3. CAS Server安装
下载CAS Server 3.0.6(可到耶鲁大学官方站或者到 http://www.ja-sig.org/products/cas/ 下载),将其中的cas.war复制到$CATALINA_HOME/webapps下(当然现在CAS中的用户密码认证是很简陋的,产品化必须重写这部分代码,生成新的cas.war)。这时,重启Tomcat应该就可以通过访问 https://james-huang:8443/cas 看到CAS的登录界面了。
4. CAS Client 部署
建议自己创建一个Project以便进行试验(架设工程名为 casclient),下载最新版本的Yale Java CAS Client(2.0.11)并将casclient.jar复制到这两个项目的WEB-INF目录的lib下。修改两个项目的WEB-INF/web.xml,添加如下的过滤器:
<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://james-huang:8443/cas/login</param-value>
</init-param><!--这里的james-huang是服务端的主机名-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://james-huang:8443/cas/proxyValidate</param-value>
</init-param><!--这里的james-huang是服务端的主机名,而且必须是-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>client:port</param-value><!--client:port就是需要CAS需要拦截的地址和端口,一般就是Client端的IP和port-->
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
至此,全部架设过程及测试完毕。当然,这仅仅是一个测试过程,若要实际环境中我们需要到数据库验证用户有效性,我们必须借助到用户数据库。首先,我们需要创建自己的数据库验证器,当然也可以使用Jasig提供的cas-server-jdbc.jar,通常我们会修改cas-server- jdbc的源码满足自己的需要,并把mysql的jdbc驱动和修改后的jar部署到%CAS%/WEB_INF/lib/下。具体的过程不在这里赘述,有兴趣的朋友可以自己研究一下。
5. 补充:1、在多台机器上部署CAS的时候要注意,这些部署的机器必须在同一个域中。2、若在配置过程中出现一些Exception,像“keytool 别名已存在”这些的出错提示,一般都是由于证书导入未成功造成的,若重新生成证书,导入到客户端的同时别忘了把server端的.keystore文件重新拷贝到Tomcat中去,石头就是由于忘记了这个步骤还调试了老半天呢:)
- [学习] 使用 CAS 实现 SSO 实践过程
- 使用cas实现sso
- 使用CAS实现SSO.
- 使用CAS实现SSO
- CAS实现SSO的过程
- 使用cas实现sso [摘]
- CAS实现SSO 学习(一)
- CAS实现SSO 学习(二)
- CAS实现SSO 学习(三)
- CAS实现SSO 学习(四)
- CAS实现SSO 学习(五)
- 使用CAS实现SSO(单点登录)
- 使用CAS实现SSO简洁教程
- 使用CAS实现SSO简洁教程
- java使用CAS实现SSO单点登录
- cas实现sso
- 利用CAS实现SSO
- cas实现sso
- 正则表达式30分钟入门教程(第二版)
- 《Effective C++》读后感
- 今天开了自己的博克
- C#中数字千位符
- SQLServer2000安装程序提示“有一个挂起的安装实例,请重起机器”的解决方法
- [学习] 使用 CAS 实现 SSO 实践过程
- DWR让Ajax如此简单
- .net之旅-TextBox(30)
- 使用struts+spring+hibernate 组装web应用
- 使用c#建立虚拟目录
- JAVA基础知识精华总结
- 五大热门技术蕴藏投资回报
- .net之旅-Table(31)
- VS2005水晶报表在时部署时遇到的问题