锁定老帖子 主题:cas客户端应用实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-20
cas服务器端的开发请参考: http://xiaomage9498-126-com.iteye.com/blog/1317058本文的内容以以上文章的内容为前提。 下面主要讲解cas客户端的开发,开发两个简单的web应用。 1、在eclipse下新建一个web工程,名为casclient1 解压下载的cas-client-3.1.12.zip包,复制modules下的所有jar包到工程的/WEB-INF/lib下;配置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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>casclient1</display-name> <!-- 用于单点退出,该监听器用于实现单点登出功能,通知其他应用单点登出 --> <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>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <!-- 设置登录的URL地址 --> <param-value>https://sso.unifyaa.com:8443/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <!-- 设置本应用的访问地址及端口 --> <param-value>http://sso.unifyaa.com:8080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CASFilter</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://sso.unifyaa.com:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://sso.unifyaa.com:8080</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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 2、开发一个简单的jsp页面 在工程的WebContent目录新建一个index.jsp,如:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="org.jasig.cas.client.authentication.AttributePrincipal" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>casClient1</title> </head> <body> <% AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal(); String userName = principal.getName(); %> <br />--------------------------------------------<br /> <h1>登录成功,CAS客户端1。</h1><br /> <h2>当前登录用户:<%= userName %></h2><br /> <a href="http://sso.unifyaa.com:8080/casclient2/index.jsp">进入客户端2</a><br /> <a href="https://sso.unifyaa.com:8443/cas/logout">退出</a><br /> </body> </html> 3、设置Tomcat 我用的是tomcat6.0.32,在部署的时候tomcat自带的jar包和工程的jar包发生冲突,需要修改%TOMCAT_HOME%\conf\context.xml文件,在文件中加多一句:<Loader delegate="true" />,表示优先使用应用的包而不使用tomcat自带的包,避免包冲突。 4、以同样的方式新建多另一个工程,名为casclient2。 5、部署casclient1和casclient2到tomcat,和cas server部署在同一个tomcat下,启动tomcat,在浏览器输入:http://sso.unifyaa.com:8080/casclient1,浏览器就会跳转到https://sso.unifyaa.com:8443/cas/login 页面提示用户登录,填写正确的用户名及密码后就会跳转到http://sso.unifyaa.com:8080/casclient1的index.jsp页面了,同时可在caslient1中点击链接访问casclient2应用而不用登录。 6、若把cas Server、casclient1、casclient2分别部署在不同机子的tomcat上,需要把证书导入到casclient1和casclient2的机子上,并修改tomcat的相关配置,同时需要在部署casclient1和casclient2的机子修改hosts文件,映射cas Server的IP。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-12-28
希望lz在发帖的时间注意声明你的测试环境,每个不同的环境对应的都是不同的配置.....另外module里面的所有jar? 我只用了3个jar,jar多了不一定是好事
|
|
返回顶楼 | |
浏览 2180 次