`
bh三少
  • 浏览: 100851 次
  • 性别: Icon_minigender_1
  • 来自: 北海
社区版块
存档分类
最新评论

cas客户端应用实现

 
阅读更多

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。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics