CAS SSO单点登录基础实践,配置CAS 服务器和CAS客户端
2010-10-15 16:11
381 查看
到 CAS 官方网站下载 CAS Server 和 Client,地址分别为: http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip http://www.ja-sig.org/downloads/cas-clients/ cas-client-java-3.0.0.zip
CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。
在 Tomcat 上部署一个完整的 CAS Server 主要按照以下几个步骤:
1、配置使用 Https [b]协议[/b]
如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议,其配置过程和配置方法可以参考 Tomcat 的相关文档。不过在生成证书的过程中,会有需要用到主机名的地方,CAS 建议不要使用 IP 地址,而要使用机器名或域名。
具体配置可参考以下内容
我们使用keytool工具创建keystore文件。可以在<JAVA_HOME>/bin目录中找到keytool工具。
1. 生成密钥对
keytool -genkey -alias tomcat-server -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
2 将服务器证书导出为证书文件:
keytool -export -alias tomcat-server -storepass changeit -file server.cer -keystore server.keystore
输入密码(changeit):
Keytool返回下列消息:
Certificate stored in file <server.cer>
3 用keytool在所选的keystore文件中创建客户端证书:
keytool -genkey -alias tomcat-client -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore
4 将新客户端证书从keystore导出到证书文件:
keytool -export -alias tomcat-client -storepass changeit -file client.cer -keystore client.keystore
输入keystore密码(changeit)。Keytool将返回该消息:
Certificate stored in file <client.cer>
5 将上述步骤所得到的tomcat根目录下server.cer以及client.cer证书文件导入到cacerts 文件中,
cacerts文件默认生成在tomcat根目录下
keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit
keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit
6在tomcat根目录下找到cacerts文件,拷贝到<JAVA_HOME>/jre/lib/security文件下
从下载得cas-server3最新版本中找到target文件下面得cas.war,拷贝到<TOMCAT_HOME>/webapp目录下
,修改<TOMCAT_HOME>/conf下面得server.xml文件,添加如下:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/server.keystore" keystorePass="changeit"/>
特别提示: 在以上配置CAS SSL之后,个人实践感觉很不好。老是弹出,安全提示。感觉对用户不好。不知道哪位高手有好的办法。我的解决办法是修改源代码,不用https,就不用提示了。这个方法在以后的cas 系列文章中也说说。
2、部署CAS server
CAS Server 是一个 Web 应用包,将前面下载的 cas-server-3.1.1-release.zip 解开,把其中的 cas-server-webapp-3.1.1.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war。由于前面已配置好 tomcat 的 https 协议,可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。
虽然 CAS Server 已经部署成功,但这只是一个缺省的实现,在实际使用的时候,还需要根据实际概况做扩展和定制,最主要的是扩展认证 (Authentication) 接口和 CAS Server 的界面。
界面在cas/WEB-INF/view/jsp/default。
3、CAS客户端部署
准备好两个应用之后,在web.xml中,增加以下filter
<web-app>
...
<filter>
<filter-name>CAS Filter</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://domainA:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://domainA:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>domainB:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/protected-pattern/*</url-pattern>
</filter-mapping>
...
</web-app>
4、在应用中,获取用户名
在jsp代码中,加入以下代码即可。
CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。
在 Tomcat 上部署一个完整的 CAS Server 主要按照以下几个步骤:
1、配置使用 Https [b]协议[/b]
如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议,其配置过程和配置方法可以参考 Tomcat 的相关文档。不过在生成证书的过程中,会有需要用到主机名的地方,CAS 建议不要使用 IP 地址,而要使用机器名或域名。
具体配置可参考以下内容
我们使用keytool工具创建keystore文件。可以在<JAVA_HOME>/bin目录中找到keytool工具。
1. 生成密钥对
keytool -genkey -alias tomcat-server -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
2 将服务器证书导出为证书文件:
keytool -export -alias tomcat-server -storepass changeit -file server.cer -keystore server.keystore
输入密码(changeit):
Keytool返回下列消息:
Certificate stored in file <server.cer>
3 用keytool在所选的keystore文件中创建客户端证书:
keytool -genkey -alias tomcat-client -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore
4 将新客户端证书从keystore导出到证书文件:
keytool -export -alias tomcat-client -storepass changeit -file client.cer -keystore client.keystore
输入keystore密码(changeit)。Keytool将返回该消息:
Certificate stored in file <client.cer>
5 将上述步骤所得到的tomcat根目录下server.cer以及client.cer证书文件导入到cacerts 文件中,
cacerts文件默认生成在tomcat根目录下
keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit
keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit
6在tomcat根目录下找到cacerts文件,拷贝到<JAVA_HOME>/jre/lib/security文件下
从下载得cas-server3最新版本中找到target文件下面得cas.war,拷贝到<TOMCAT_HOME>/webapp目录下
,修改<TOMCAT_HOME>/conf下面得server.xml文件,添加如下:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/server.keystore" keystorePass="changeit"/>
特别提示: 在以上配置CAS SSL之后,个人实践感觉很不好。老是弹出,安全提示。感觉对用户不好。不知道哪位高手有好的办法。我的解决办法是修改源代码,不用https,就不用提示了。这个方法在以后的cas 系列文章中也说说。
2、部署CAS server
CAS Server 是一个 Web 应用包,将前面下载的 cas-server-3.1.1-release.zip 解开,把其中的 cas-server-webapp-3.1.1.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war。由于前面已配置好 tomcat 的 https 协议,可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。
虽然 CAS Server 已经部署成功,但这只是一个缺省的实现,在实际使用的时候,还需要根据实际概况做扩展和定制,最主要的是扩展认证 (Authentication) 接口和 CAS Server 的界面。
界面在cas/WEB-INF/view/jsp/default。
3、CAS客户端部署
准备好两个应用之后,在web.xml中,增加以下filter
<web-app>
...
<filter>
<filter-name>CAS Filter</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://domainA:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://domainA:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>domainB:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/protected-pattern/*</url-pattern>
</filter-mapping>
...
</web-app>
4、在应用中,获取用户名
在jsp代码中,加入以下代码即可。
session.getAttribute(CASFilter.CAS_FILTER_USER);
session.getAttribute("edu.yale.its.tp.cas.client.filter.user");
相关文章推荐
- CAS SSO单点登录基础实践,配置CAS 服务器和CAS客户端
- Cas服务器设置(java),java、php客户端配置
- Exchange部署之:配置客户端访问服务器角色CAS(部署证书/设置OWA)
- Windows 2003上安装配置SVN服务器及客户端 结合别人的文章以及自己实践整理
- CAS服务器和客户端配置 证书的生成,导出,导入到jdk
- 日志分析-1.rsyslog 基础配置(服务器/客户端)
- cas sso单点登录系列3_cas-server端配置认证方式实践(数据源+自定义java类认证)
- 实验:PPPoE服务器/客户端基础配置
- 单点登录学习(3)CAS客户端配置
- Windows server 2012 NTP配置,实现成员服务器及客户端时间与域控制器时间同步
- 服务器RAID配置全程与RAID基础知识
- VSS 服务器/客户端配置操作手册
- CentOS7服务器基础配置
- Linux服务器访问Win7客户端共享目录的配置方法
- wcfDualHTTPBinding配置的服务器与客户端部署于不同机器的问题
- oracle客户端不需要配置tnsnames.ora文件直接连接服务器数据库
- Openfire服务器和Spark客户端配置
- play 2.10配置cas客户端