CAS单点登录的环境搭建及使用
来源:互联网 发布:洞主的淘宝店 编辑:程序博客网 时间:2024/05/16 08:05
一.环境
软件:jdk1.7、 tomcat7、 cas-server-3.4.11、cas-client-3.2.1
系统环境:
编辑C:\Windows\System32\drivers\etc\host文件,添加如下内容:
demo.wh.com 127.0.0.1app1.wh.com 127.0.0.1
二.证书配置
2.1.证书生成
keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass michaelpwd(密码) -validity 365 -keystore g:\sso\ssodemo.keystore(位置) -storepass michaelpwd(密码)
注意:
- 截图中需要输入的姓名和上面hosts文件中配置的一致;
- keypass 和 storepass 两个密码要一致,否则下面tomcat 配置https 访问失败;
2.2导出证书
keytool -export -alias ssodemo -keystore c:\sso\ssodemo.keystore(上一步的位置) -file c:\sso\ssodemo.crt -storepass michaelpwd(上一步的密码)
2.3客户端导出证书
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\sso\ssodemo.crt -alias ssodemo(上面的名字)(输入的密码是changeit)
三.配置及验证
解压apache-tomcat-7.0.73,修改conf/server.xml文件
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8"/>
修改如下:
<Connector port="38443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="c:/sso/sso.keystore" keystorePass="michaelpwd"(上面设定的密码) clientAuth="false" sslProtocol="TLS" URIEncoding="UTF-8"/>
访问https://demo.wh.com:8443,能出现tomcat官网界面则表示成功。
四.配置cas-server
下载cas-server jar包,解压提取cas-server-3.4.11/modules/cas-server-webapp-3.4.11.war文件,把改文件copy到 tomcat安装目录的webapps 目下,并重命名为:cas.war.
启动tomcat,在浏览器地址栏输入:https://demo.wh.com:8443/cas/login ,回车,出现下图界面则表示成功:
五.部署CAS-Client相关的Tomcat
自定义一个项目如A,下载cas-client jar包,解压提取cas-client-3.2.1/modules/cas-client-core-3.2.1.jar到A项目的WEB-INF\lib文件下,修改WEB-INF\web.xml 如下:
<!-- ======================== 单点登录开始 ======================== --> <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置--> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <!-- 该过滤器用于实现单点登出功能,可选配置。 --> <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> <filter> <filter-name>CAS Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://demo.wh.com:8443/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://app1.wh.com:18080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责对Ticket的校验工作,必须启用它 --> <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://demo.wh.com:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://app1.wh.com:18080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 --> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 --> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- ======================== 单点登录结束 ======================== -->
修改conf/server.xml
<Server port="8005" shutdown="SHUTDOWN"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改端口号如下:
<Server port="18005" shutdown="SHUTDOWN"><Connector port="18080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="18443" /><Connector port="18009" protocol="AJP/1.3" redirectPort="18443" />
至此,cas-server端及cas-client端配置完成。
六.验证cas单点登录环境
启动tomcat-server及tomcat-client,当server未登录时,访问client端会自动跳转到cas登录界面;若登陆则可直接访问。
七.搭建中遇到的问题
1.导出证书时,输入keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\sso\ssodemo.crt -alias ssodemo,可能会出现以下两种问题:
我的java安装在C:\Program Files下,%JAVA_HOME%读取该路径,会提示Files\jre\lib\security\cacerts找不到,主要是不能识别空格造成的。
解决办法:重新安装java环境到不包含空格的文件路径下。提示找不到jre的路径,此问题可能是tomcat运行使用的jre是安装jdk时安装jre的目录,非jdk自带的jre,当然如果是安装在同一目录下除外。
解决办法:修改tomcat的jre的path即可。
阅读全文
0 0
- CAS单点登录的环境搭建及使用
- cas单点登录环境搭建
- CAS单点登录环境搭建
- CAS 实现单点登录(一):环境搭建、部署及简单使用
- 单点登录cas的使用
- cas单点登录搭建
- 使用CAS+tomcat搭建单点登录
- 搭建CAS单点登录服务器
- 搭建CAS单点登录服务器
- 搭建CAS单点登录服务器
- 基于CAS的单点登录SSO[1]: 搭建CAS单点登录demo
- CAS(7)-建立使用Cas进行单点登录的应用
- CAS(7)-建立使用Cas进行单点登录的应用
- 单点登录系统CAS搭建及取得更多用户信息的实现
- 单点登录系统CAS搭建及取得更多用户信息的实现
- 单点登录和单点登出CAS的使用
- CAS 单点登录使用详解
- CAS 单点登录使用详解
- 数据结构之链表(附:数组与链表对比、ArrayList/LinkedList源码分析)
- Android listview
- hibernate笔记-007-联合主键xml配置
- 请求队列request_queue
- HDU4908 (5/600)
- CAS单点登录的环境搭建及使用
- Python编程:从入门到实践读书笔记-8 函数
- Runtime相关方法封装
- c++虚拟克隆
- jsoup总结
- 《Web接口开发与自动化测试基于Python语言》–第5章
- fwrite和fread函数的用法小结
- Codeforces Round #418 (Div. 2) (补题C 尺取法)
- 苹果与宜家:以用户为中心不会产生突破性创新