cas服务器端的开发请参考:
本文的内容以以上文章的内容为前提。
下面主要讲解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。
分享到:
相关推荐
JCAS 只需包装一个 Node.js CAS 客户端。 用法 请参考了解如何在 Node.js 应用程序中集成 CAS 身份验证。
基于CAS的单点登录系统,可以通过这些步骤来实现不同系统展示不同的登录页,但是登录后的信息共享
CAS 协议涉及到至少三个方面:客户端Web浏览器、Web应用请求的身份验证和CAS服务器。它还可能涉及一个后台服务(例如数据库服务器),它并没有自己的HTTP接口,但与一...因此,网页邮件客户端和邮件服务器都可以实现CAS
CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用,研究如何采用 CAS 实现轻量级单点登录解决方案。 CAS 是 Yale 大学发起的...
本课程主要通过CAS来实现SSO,本教程会从最基本的基础知识讲起,由浅入深再到实战,完成多应用的单点登录功能。 本课程内容如下: 1、 什么是SSO和CAS 2、 CAS Server服务端和客户端的搭建和配置 3、 单点登录和单...
该演示项目将通过简单而清晰的代码示例,演示CAS单点登录的基本原理、配置步骤以及如何集成CAS客户端到你的应用中。 适用人群: 这个资源适用于具有一定Java编程和Web开发经验的开发人员,特别是那些对单点登录和...
CAS Server 是一套基于 Java 实现的服务...当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口 sso,实现单点登入的开源代码客户端
对CAS的服务端进行改造,改造时使用了Maven来管理代码。此次改造实现了自定义登录验证、向客户端传输更多用户信息、登出允许携带参数等功能。应用中用到的Oframer请至我的资源中下载。
春天-Oauth-sso 1.SSO介绍 什么是SSO SSO英文全称单点登录,单点登录。...单点登录协议及结构,允许CAS中的体现结构CAS协议中有以下几个概念:1.CAS客户端:需要集成单点登录的应用,称为单点登录客户
这是一个完全使用nginx的lua模块编写的CAS客户端。 这个想法是,您将通过CAS身份验证来保护Nginx位置。 通过提供一个CAS端点(目前在nginx.conf中必须具有一个相应的条目,请参阅“限制”部分),您将能够将访问...
sna集中式session管理实现服务器集群及客户端程序,以“单点登陆、session共享解决方案(2)”为基础建立的服务器机群应用,运行server.bat启动服务器端,将client包导入web工程,通过Client.sessionPut()等方法调用。...
间接客户端用于Web应用程序身份验证,而直接客户端用于Web服务身份验证: ▸OAuth-SAML-CAS-OpenID Connect-HTTP-Google App Engine-LDAP-SQL-JWT-MongoDB-CouchDB-Kerberos-IP地址-Kerberos(SPNEGO)-REST API ...
500行Node.js简单实现单点登录(SSO)中央授权单元和客户端 重要的 要运行这些示例,您需要在 linux 中的/etc/hosts文件中添加以下条目 127.0.0.1 sso.ankuranand.com 127.0.0.1 consumer.ankuranand.in 介绍 Web ...
通过使用面向对象的设计,您将能够创建一个实现上述协议规范的 Sinatra 应用程序,以及一个将使用服务器服务的演示客户端应用程序。 GitHub 上的源文件包含: 一个用作身份验证系统的 API 的 Sinatra 应用程序; ...
使用Web浏览器作为客户端应用程序。 在线游戏“海战”,该游戏具有基于挥杆和awt的图形界面。 使用Jini和rmi在客户端之间交换消息。 使用原子。 实现并行的SkipList算法。 实现并发模式Disruptor。 实现并发...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
22.3. 配置CAS客户端 23. X.509认证 23.1. 概述 23.2. 把X.509认证添加到你的web系统中 23.3. 为tomcat配置SSL 24. 替换验证身份 24.1. 概述 24.2. 配置 A. 安全数据库表结构 A.1. User表 A.1.1...
21.3. 配置CAS客户端 22. X.509认证 22.1. 概述 22.2. 把X.509认证添加到你的web系统中 22.3. 为tomcat配置SSL 23. 替换验证身份 23.1. 概述 23.2. 配置 A. 安全数据库表结构 A.1. User表 A.1.1. 组权限 ...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...