您的位置:首页 > 其它

cas的客户端搭建

2015-10-10 15:02 495 查看
打开用来安装CAS客户端应用的名为C1的机器,客户端是相对CAS服务器而言的, 在C1机器上要确保安装好1.5以上版本的JDK,我们这里安装的是1.5版本的JDK。在C1机器上的D盘新建一个名为cas-client的目录,将我们下载的Tomcat解压放在该目录下。

在C1机器上通过地址https://server ip:port/ cas-server-webapp/浏览访问安装在服务器上的cas-server-webapp应用,可以看到CAS服务器应用的登录界面,如果当前在当前在CAS服务器机器上的服务器证书不是由可信任的第三方机构颁发,那么我们在浏览时会看到如下图所示"证书错误"的警告提示。(我用的IE浏览器导出服务器的证书到客户端C1)



点击这个浏览器地址栏上这个"证书错误"区域(如上图所示的红色方框标识区域),弹出如下图所示的窗口。



点击窗口下方的"查看证书"链接(如上图所示),弹出如下图所示窗口。



点击弹出窗口当中的"证书信息"标签页,可以看到当前在CAS服务器上安装的服务器证书信息。



点击下方的"复制到文件(C)..."按钮,通过弹出的窗口向导,全部采用向导中的默认值将当前服务器证书导出的C1机器本地,这里我们将其存放在C1机器的d:\cas-client目录下,导出的证书文件名为server.cer。



通过以上动作,我们已经将位于CAS服务器端证书下载到C1机器上,因为要在C1机器上安装CAS客户端应用,这个客户端应用要使用CAS服务器进行认证登录,所以就需要建立C1对CAS服务器端的信任关系,建立信任关系的方法比较简单,就是将CAS服务器端上下载的证书导入到C1机器的JDK当中即可。

打开C1机器上的doc字符界面,切换到与当前JAVA_HOME环境变量对应的JDK目录的bin目录下,利用keytool工具执行下面的命令。

keytool -import-trustcacerts -alias tomcat -file d:\cas-client\server.cer -keystore cacerts -storepass changeit


这个命令比较简单,就是将当前位于d:\cas-client目录下的server.cer证书文件导入到一个名为cacerts的文件当中,这里我们没有指定存储cacerts文件路径,默认它将在当前JDK的bin目录下创建。

 执行这个命令,在提示地方输入"y"即完成cacerts文件的创建工作,接下来需要将这个创建在bin目录下的cacerts文件移动到当前JDK目录下的jre/lib/security目录下(一定要是JDK目录下的JRE目录,而不能是与JDK平级的JRE目录),如果security目录下有cacerts文件,将其覆盖即可。

 工作做到这里,CAS服务器与客户端的配置就全部完成了。接下来我们就来在客户端C1机器上的Tomcat当中部署一个简单的Java Web应用,测试一下在访问这个web应用时如何跳转到CAS服务器进行登录验证,验证成功后又如何跳转回我们的这个测试web应用的。


测试CAS客户端

打开C1机器上的d:\cas-client目录下的Tomcat目录,这里为简单起见,我们使用Tomcat当中的docs应用为要进行测试的客户端Java web应用。转到Tomcat下的webapps/docs/WEB-INF目录下的web.xml文件,在其中添加如下配置信息。

<context-param>
<param-name>serverName</param-name>
<param-value>http://localhost:8080</param-value>
</context-param>
<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>
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://s1:8443/cas/login</param-v
4000
alue>
</init-param>
</filter>
<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://s1:8443</param-value>
</init-param>
<init-param>
<param-name>redirectAfterValidation</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<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 Authentication Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


这里配置注意的是将这里关于CAS服务器地址要修改成你自己的使用的服务地址(服务器名或域名),我们这里是"S1",保存修改后的web.xml文件,下载的CAS客户端发行包,解压后找到其中的modules目录下的cas-client-core-3.2.0.jar与commons-logging-1.1.jar文件,将这两个jar文件复制到C1机器的d:\cas-client中Tomcat目录下的webapps/docs/WEB-INF/lib目录下即可。

运行C1上的Tomcat,打开浏览器尝试访问地址:http://localhost:8080/docs,可以看到浏览器会自动将页面重定向到https://s1:8443/cas/login,要求我们登录,登录成功后浏览器又会自动重定向回到原来我们要访问的http://localhost:8080/docs,如果您看到的与这里描述一致就表示您的配置成功了。

当然大家可以再搭建另外一个Tomcat应用进行测试,受信任的各个应用只要一处登录,其它地方就直接可以免登录。

预期流程:
打开app1 url
—-> 跳转cas server 验证 —-> 显示app1的应用 —->
打开app2 url —->
显示app2应用 —->
注销cas server —-> 打开app1/app2 url —-> 重新跳转到cas server 验证.

Any question, you can call me.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: