cas实现单点登录
2015-12-31 13:19
387 查看
添加虚拟域名: 可以添加多个虚拟域名
windows下修改文件:
添加内容如下:
生成证书
我的机器名称为“www.caohaibing.com”,我就把它作为我的host,那么对应的证书应该这样创建。
其中 casfortest 为别名, changeit 为密码(即密钥库口令);
该语句是对我们之前介绍的 keytool -genkey -alias casfortest -keyalg RSA 的精写,它已经通过相应的参数指定了对应的参数值,而不需要再与用户交互了。如果还用之前的语句生成证书的话,那么对应的值应该这样填: 姓 和 名字 都填 www.caohaibing.com
之后会在用户的对应目录下(这里目录是 C:\Users\aaa)生成一个.keystore文件。之后需要将该文件导出为一个证书到%JAVA_HOME%/jre/lib/security目录下,对应指令为:
之后需要将导出的casfortest.crt证书添加到运行时使用的JRE的受信任证书库中,此时如果出现异常可将原本%JAVA_HOME%/jre/lib/security目录下的cacerts删除后继续执行以下指令。
配置CAS 服务器端
Cas应用都需要有一个Cas Server。Cas Server是基于Java Servlet实现的,其要求部署在Servlet2.4以上版本的Web容器中。在此笔者将其部署到tomcat7中。Cas Server是要求使用https协议进行访问的,所以如果你的Web容器没有开启https通道,则需先开启。
参考博文:http://haohaoxuexi.iteye.com/blog/2128732
CAS默认的认证方式是 用户名和密码一样。要更改为从数据库中查询。需要配置数据源 dataSource,参考以上博文。
建立使用Cas进行单点登录的应用
参考博文:http://haohaoxuexi.iteye.com/blog/2142631
新建普通的maven web-app项目,CasClientA,CasClientB,将index.jsp页面的欢迎显示更改一下。再lib目录中加入jar: cas-client-core-3.2.1.jar (直接在maven加依赖,一直加载不了这个包); CasClientA和CasClientB项目更改相同
pom.xml中加依赖
将 CasClientA 和 CasClientB 打成 war 包,放入 tomcat 的webapp目录下;
1. 在cmd进入对应的项目路径
2. mvn clean package -DskipTests -Pdev 生成对应的WAR包,在项目的target目录下,名字
测试Cas单点登录的部署:
tomcat的bin目录下运行 startup.bat 启动tomcat,
访问客户端CasClientA: www.caohaibing.com:8080/CasClientA
页面会自动跳转到 Cas Server 的登录页面:https://www.caohaibing.com:8443/cas/login?service=http%3A%2F%2Fwww.caohaibing.com%3A8080%2FCasClientA%2F
输入用户名密码,根数据库表中的信息匹配:登录成功会重新跳转到CasClientA的index.jsp页面:
测试访问CasClientB项目: http://www.caohaibing.com:8080/CasClientB/
不再需要转到 Cas Server 的登录页面了;;
注意:
在服务器端生成证书事如果密码用的不是 changit 时, 因为添加到运行时使用的JRE的受信任证书库中的密码 默认为 changeit , 这里的密码需要更改,不然会出现证书之类的错误。
windows下修改文件:
C:\Windows\System32\drivers\etc\hosts
添加内容如下:
127.0.0.1 www.caohaibing.com
生成证书
我的机器名称为“www.caohaibing.com”,我就把它作为我的host,那么对应的证书应该这样创建。
keytool -genkey -keyalg RSA -alias casfortest -dname "cn=www.caohaibing.com" -storepass <span style="background-color: rgb(255, 255, 51);">changeit</span>
其中 casfortest 为别名, changeit 为密码(即密钥库口令);
该语句是对我们之前介绍的 keytool -genkey -alias casfortest -keyalg RSA 的精写,它已经通过相应的参数指定了对应的参数值,而不需要再与用户交互了。如果还用之前的语句生成证书的话,那么对应的值应该这样填: 姓 和 名字 都填 www.caohaibing.com
之后会在用户的对应目录下(这里目录是 C:\Users\aaa)生成一个.keystore文件。之后需要将该文件导出为一个证书到%JAVA_HOME%/jre/lib/security目录下,对应指令为:
keytool -export -alias casfortest -file %JAVA_HOME%/jre/lib/security/casfortest.crt -storepass changeit
之后需要将导出的casfortest.crt证书添加到运行时使用的JRE的受信任证书库中,此时如果出现异常可将原本%JAVA_HOME%/jre/lib/security目录下的cacerts删除后继续执行以下指令。
keytool -import -alias casfortest -file %JAVA_HOME%/jre/lib/security/casfortest.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
配置CAS 服务器端
Cas应用都需要有一个Cas Server。Cas Server是基于Java Servlet实现的,其要求部署在Servlet2.4以上版本的Web容器中。在此笔者将其部署到tomcat7中。Cas Server是要求使用https协议进行访问的,所以如果你的Web容器没有开启https通道,则需先开启。
参考博文:http://haohaoxuexi.iteye.com/blog/2128732
1.1 开启tomcat7的https通道
打开tomcat安装目录conf/server.xml文件,将如下语句的注释打开,并加上属性keystorePass,密码为我们在建立keystore时设立的密码。这样我们就可以使用https来访问tomcat了。默认其会到${user.home}/.keystore寻找keystore文件,我们之前建立的keystore文件默认就在这个位置。<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystorePass="changeit"/>如果更改过生成证书的位置:参考博文 http://blog.csdn.net/small_love/article/details/6664831
1.2 部署Cas Server
从官网下载的cas server中会含有一个cas server对应的war包,对应路径为cas-server-3.5.2\modules\cas-server-webapp-3.5.2.war,我们可以把该war包重命名为cas.war,然后丢到tomcat的webapps目录下。之后我们就可以启动tomcat,然后访问https://localhost:8443/cas/login就可以看到Cas的登录页面了。1.3 更改认证方式 http://blog.csdn.net/cenguocheng/article/details/12185815
http://blog.csdn.net/chbsrzf/article/details/50434560
http://haohaoxuexi.iteye.com/blog/2128869
http://haohaoxuexi.iteye.com/blog/2142616CAS默认的认证方式是 用户名和密码一样。要更改为从数据库中查询。需要配置数据源 dataSource,参考以上博文。
建立使用Cas进行单点登录的应用
参考博文:http://haohaoxuexi.iteye.com/blog/2142631
新建普通的maven web-app项目,CasClientA,CasClientB,将index.jsp页面的欢迎显示更改一下。再lib目录中加入jar: cas-client-core-3.2.1.jar (直接在maven加依赖,一直加载不了这个包); CasClientA和CasClientB项目更改相同
pom.xml中加依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.caohaibing</groupId> <artifactId>CasClientA</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>CasClientA Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.2-b01</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> </dependencies> <build> <finalName>CasClientA</finalName> </build> </project>web.xml文件更改为:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <context-param> <param-name>serverName</param-name> <param-value>http://www.caohaibing.com:8080</param-value> </context-param> <filter> <filter-name>casAuthenticationFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://www.caohaibing.com:8443/cas/login</param-value> </init-param> </filter> <filter-mapping> <filter-name>casAuthenticationFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>casTicketValidationFilter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://www.caohaibing.com:8443/cas</param-value> </init-param> </filter> <filter-mapping> <filter-name>casTicketValidationFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>casHttpServletRequestWrapperFilter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>casHttpServletRequestWrapperFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>casAssertionThreadLocalFilter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>casAssertionThreadLocalFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <display-name>Client A</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
将 CasClientA 和 CasClientB 打成 war 包,放入 tomcat 的webapp目录下;
1. 在cmd进入对应的项目路径
2. mvn clean package -DskipTests -Pdev 生成对应的WAR包,在项目的target目录下,名字
测试Cas单点登录的部署:
tomcat的bin目录下运行 startup.bat 启动tomcat,
访问客户端CasClientA: www.caohaibing.com:8080/CasClientA
页面会自动跳转到 Cas Server 的登录页面:https://www.caohaibing.com:8443/cas/login?service=http%3A%2F%2Fwww.caohaibing.com%3A8080%2FCasClientA%2F
输入用户名密码,根数据库表中的信息匹配:登录成功会重新跳转到CasClientA的index.jsp页面:
测试访问CasClientB项目: http://www.caohaibing.com:8080/CasClientB/
不再需要转到 Cas Server 的登录页面了;;
注意:
在服务器端生成证书事如果密码用的不是 changit 时, 因为添加到运行时使用的JRE的受信任证书库中的密码 默认为 changeit , 这里的密码需要更改,不然会出现证书之类的错误。
相关文章推荐
- Best Practices for YARN Resource Management
- 创建数据库表空间和分配用户权限
- 卷及神经网络CNN for image retrieval
- 【冷知识】在python2.7或更早的版本中模拟类似3.x的print函数
- x64不同平台的调用约定
- 关于红杏的公益代理, Android Studio以及freso的编译
- Java Hibernate:调试 Jsp 时重启 Tomcat 以禁用缓存
- 知道指针地址 , 怎么取出指针指向的内容??? 0x7fff5fbff564 这种值 怎么赋值给一个变量??
- JNI - 如何将 char 转换成 jstring
- CVPR15 image retrieval reading list
- 运算符:三目运算符,运算符优先级,sizeof,自增自减,取余
- Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架
- Yarn下的YarnChild启动个数决定参数
- Codeforces Round #269 (Div. 2) A B C
- Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架
- BoW图像检索Python实战
- 使用IIS发布网站有多种方法,他们的使用场合也不同
- Egret是一套完整的HTML5游戏开发解决方案
- java设计模式----命令模式
- 三、获取寄存器信息