读书人

CAS单点登进SSO配置说明

发布时间: 2013-02-24 17:58:56 作者: rapoo

CAS单点登入SSO配置说明
安装环境Tomcat7.0JDK6CAS SERVER 3.5.1,下载地址 http://www.jasig.org/cas/downloadCAS CLIENT 3.2.1,下载地址 http://downloads.jasig.org/cas-clients/?C=M;O=D常用命令-genkey:在用户主目录创建一个默认文件“.keystore”,还会产生一个mykey的别名,makey中包含用户的公钥、私钥和证书-alias:产生别名-keystore:指定密钥库的名称-keyalg:指定密钥的算法-validity:指定创建证书有效期多少天-keysize:指定密钥长度-storepass:指定密钥库的密码-keypass:指定别名条目的密码-dname:指定证书拥有者信息-list:显示密钥库中证书信息-v:显示密钥库中证书的详细信息-export:将别名指定的证书导出到文件-file:参数指定导出的文件到文件名-delete:删除密钥库中某条目-keypasswd:修改密钥库中指定条目口令-import:将已签名数字证书导入密钥库创建证书

证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书,这里使用JDK自带的keytools工具生成证书,

如果以后真正在产品环境中使用肯定要去证书提供商去购买。

用JDK自带的keytool工具生成证书:

keytool -genkey -alias cas -keyalg RSA -keystore f:/resources/cas

CAS单点登进SSO配置说明


输入完信息之后,输入 y,然后输入密码,提交。
这里,由于我的名称输入的是sso.rying.com,其实这个域名是不存在的,修改

C:\Windows\System32\drivers\etc\hosts

添加内容如下:

127.0.0.1 sso.rying.com

这样在访问sso.rying.com的时候其实是访问的127.0.0.1也就是本机


导出证书dos下进入f:/resources目录,

F:\resources>keytool -export -file f:/resources/cas.crt -alias wsria -keystore f:/resources/cas

输入密码,提交。

CAS单点登进SSO配置说明

CAS单点登进SSO配置说明

客户端JVM导入证书

keytool -import -keystore E:\develop\Java\jdk1.6.0_37\jre\lib\security\cacerts -file f:\resources\cas.crt -alias cas

CAS单点登进SSO配置说明
如果发生错误CAS单点登进SSO配置说明
尝试使用密码 changeit

至此证书的创建、导出、导入到客户端JVM都已完成


应用到tomcat修改tomcat,conf/server.xml文件

点击继续,进入tomcat欢迎页面,OK。
CAS服务器配置下载完成后解压到 F:\resources,把 F:\resources\cas-server-3.5.1\modules\cas-server-webapp-3.5.1.war 重命名为cas.war,复制到tomcat webapp下面访问 https://sso.rying.com:8443/cas/login,看到登入页面:CAS单点登进SSO配置说明
用户名密码相同就能登入成功了。
CAS链接数据源登入配置

上面的初体验仅仅是简单的身份验证,实际应用中肯定是要读取数据库的数据,下面我们来进一步配置CAS服务器怎么读取数据库的信息进行身份验证。首先打开

tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml

找到


配置说明:

QueryDatabaseAuthenticationHandler:cas-server-support-jdbc提供的查询接口其中一个,QueryDatabaseAuthenticationHandler是通过配置一个 SQL 语句查出密码,与所给密码匹配。

如果需要使用密码加密,可以创建一个类继承 org.jasig.cas.authentication.handler.PasswordEncoder,然后在encode中加密用户输入的密码返回即可。

如果需要在代码中获取用户名密码进行验证,可以创建一个类继承 org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler,重写

authenticateUsernamePasswordInternal方法。

CAS客户端配置eclipse下新建一个web项目,从F:\resources\cas-client-3.2.1\modules导入jar包cas-client-core-3.2.1.jar
commons-logging-1.1.jar
配置web.xml,添加以下内容:


页面跳转到CAS系统登入页面,输入用户名密码CAS单点登进SSO配置说明
登入成功,返回hello.html页面,并且带上了jsessionid。
注意:这里可能会抛出异常 sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target解决办法:导入证书到jre中,方法同导入到jdk中的jre。keytool -import -keystore E:\develop\Java\jre6\lib\security\cacerts -file f:\resources\cas.crt -alias cas
看下是否添加成功:keytool -list -keystore E:\develop\Java\jre6\lib\security\cacertsCAS单点登进SSO配置说明

此时,再创建一个CASClient2,项目同CASClient,使用CASClient访问hello.html并且登入成功之后,我们访问CASClient2的hello.htmlCAS单点登进SSO配置说明
可以看到同样带上了jsessionid,登入成功。
访问 https://sso.rying.com:8443/cas/logout 测试注销,出现注销成功页面,OK。如果注销成功想回到登入页面,可以修改cas-servlet.xml文件,在logoutController的bean配置中修改p:followServiceRedirects="${cas.logout.followServiceRedirects:false} 为 true
修改 logout路径,并加上service属性,为需要重定向页面地址原来路径:https://sso.rying.com:8443/cas/logout 现在:https://sso.rying.com:8443/cas/logout ?service=http://localhost:8080/CASClient/login.html界面美化CAS服务器登入页面在\webapps\cas\WEB-INF\view\jsp\default\ui下登入页面:casLoginView.jsp登入成功页面:casGenericSuccess.jsp登出页面:casLogoutView.jsp自己修改替换这些文件就可以了。

读书人网 >编程

热点推荐