`
wu_quanyin
  • 浏览: 208173 次
  • 性别: Icon_minigender_1
  • 来自: 福建省
社区版块
存档分类
最新评论

CAS(单点登陆)---总结二

阅读更多

返回更多用户信息继...

配置ssoAuth/WEB-INF/view/protocol/casServiceValidationSuccess.jsp下进行配置如完整页面如下:

 

<%@page pageEncoding="gbk"%>
<%@ page session="false" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %><cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
	<cas:authenticationSuccess>
		<cas:user>${fn:escapeXml(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.id)}</cas:user>
		<c:if test="${not empty pgtIou}">
				<cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
		</c:if>
		<c:if test="${fn:length(assertion.chainedAuthentications) > 1}">
				<cas:proxies>
					<c:forEach var="proxy" items="${assertion.chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(assertion.chainedAuthentications)-2}" step="1">
								<cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
					</c:forEach>
				</cas:proxies>
		</c:if>
		
        <c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">
                 <cas:attributes>
              <c:forEach var="attr"
					items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}"
					varStatus="loopStatus" begin="0"
					end="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes)-1}"
					step="1">
					<%-- Produce output exactly as CAS client code expects it: <cas:attrName>attrValue</cas:attrName> 
                                          格式一定要按照这种形式写,要不然在客户端时你得不到数据,因为服务器无法识别,大多数文章所定的那种形式

                                         --%>
					<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>

				</c:forEach>
                </cas:attributes>
        </c:if> 
        
	</cas:authenticationSuccess>
</cas:serviceResponse>

 然后就在客户端返回用户信息,如下:

client jsp 通过这种形式可以获取到全部的用户信息:

 

		<%
			AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
			Set attributeSet=principal.getAttributes().entrySet();
			for(Iterator iter=attributeSet.iterator();iter.hasNext();){
				Map.Entry attribute=(Map.Entry)iter.next();
				out.println("key:("+attribute.getKey()+")--->"+"value:("+attribute.getValue()+")***");
				out.println();
			}
		%>

9,给登录页设置验证码

1,在服务器ssoAuth/login上设置验证码.(login-webflow.xml)

2,自定义的登录页设置验证码(remoteLogin-webflow.xml)

查看这篇文章:http://blog.chinaunix.net/u2/86974/showart_1997021.html

要根据以上两种方案在不同的webflow中设置

 

10,解决如qq上qq邮箱单点登陆,我们用的是spark/openfire

 我采用的是httpclient 登陆到ssoAuth/login上进行验证,获取到CASTGC这个cookie 然后在把他设置进要打

开的浏览器上,不过有个bug没有解决就是打开浏览器时cookie是如何写入到浏览器中?

 1,要把cookie放在url上,转到一个servelet上进行写入cookie再中转,这个方法有缺陷.得到那个url在任何

浏览器都可以登陆.

 2,查看了一下阿里旺旺的实现方式,他采用的是自己在im上写个服务器,然后进行cookie写入

 

分享到:
评论
7 楼 wu_quanyin 2011-11-03  
baalwolf 写道
wu_quanyin 写道
baalwolf 写道
在远程登录的页面上加验证码 这种方式好像不行吧

http://hc.gkcity.com/bws/auth/login.jsp 这个就是远程的验证码。。。你提交三四次那个验证码会出来

我远程加上验证码  打开客户端的登录页面 从服务端处生成一个验证码 有一个sessionid 。当我输入账号密码提交以后又生成另外一个sessionid 这两个sessionid不一样因此取不到服务端的验证码

如果是sessionid问题的话,,你完全可以自己手动设置sessionid,使在请求过程中保持相同
6 楼 baalwolf 2011-11-03  
wu_quanyin 写道
baalwolf 写道
在远程登录的页面上加验证码 这种方式好像不行吧

http://hc.gkcity.com/bws/auth/login.jsp 这个就是远程的验证码。。。你提交三四次那个验证码会出来

我远程加上验证码  打开客户端的登录页面 从服务端处生成一个验证码 有一个sessionid 。当我输入账号密码提交以后又生成另外一个sessionid 这两个sessionid不一样因此取不到服务端的验证码
5 楼 wu_quanyin 2011-10-24  
baalwolf 写道
在远程登录的页面上加验证码 这种方式好像不行吧

http://hc.gkcity.com/bws/auth/login.jsp 这个就是远程的验证码。。。你提交三四次那个验证码会出来
4 楼 baalwolf 2011-10-22  
在远程登录的页面上加验证码 这种方式好像不行吧
3 楼 keanu196492 2010-03-29  
学习到了,之前一直觉得单点登录很难做的。
2 楼 wu_quanyin 2010-03-29  
rain2005 写道
获取全部用户信息你扩展一下CASfilter不就可以了吗


可以吗?获取用户信息都要到用服务器端取,也就是都要服务器端返回才可取到.这种配置可以动态的配置返回客户端所需要的信息??
1 楼 rain2005 2010-03-29  
获取全部用户信息你扩展一下CASfilter不就可以了吗

相关推荐

    struts2+cas单点登陆例子

    Struts2和CAS单点登录(SSO)的集成是一个常见的Web应用安全实践,它允许用户在一个系统登录后,无须再次输入凭证就能访问其他相互信任的系统。在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与...

    tomcat cas 单点登陆

    ### Tomcat与CAS单点登录实现详解 #### 一、背景介绍 在现代企业级应用环境中,多个系统之间往往需要进行集成,以便于提供统一的用户体验和服务。其中一个关键的需求是实现单点登录(SSO, Single Sign-On)功能,即...

    cas单点登陆集成到简单maven项目的全部war包

    总结,这个压缩包提供了集成CAS单点登录到Maven项目所需的全部资源,包括服务端war包和客户端DEMO,是学习和实践SSO技术的好材料。通过深入理解和操作这些内容,你可以更好地掌握CAS的工作原理以及如何在实际项目中...

    CAS单点登陆测试实例demo,源码

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)系统,广泛应用于各类Web应用程序的身份验证。SSO允许用户通过一次登录,就能访问多个相互信任的应用系统,无需多...

    cas单点登陆带attribute客户端示例程序

    总结起来,这个"cas单点登陆带attribute客户端示例程序"是学习和实现CAS SSO的一个宝贵资源。通过研究和调整这个示例,开发者可以快速地将CAS集成到自己的Java应用中,同时处理中文属性,提高应用的安全性和用户体验...

    CAS3.5.2单点登录详解.docx

    CAS 3.5.2 单点登录详解 CAS(Central Authentication Service)是一种流行的单点登录解决方案,主要用于提供统一身份验证和授权管理。CAS 3.5.2 是 CAS 的一个稳定版本,提供了许多实用的功能和配置项。在本文中,...

    JEECG 单点登录集成文档(kisso集成)

    JEECG单点登录集成文档(kisso集成)详细介绍了如何将Kisso单点登录解决方案集成...通过以上知识点的总结,开发者能够更深入地理解Kisso在JEECG单点登录集成中的工作原理及实现方法,并能按照文档指南进行配置和开发。

    让CAS支持客户端自定义登陆页面----服务器篇-.pdf

    CAS是一种开源的身份验证框架,它提供单点登录(SSO)功能,通常用于集中管理多个应用系统的用户认证。以下是对文章内容的详细解析: **一、目标与原则** 1. **不影响原有统一登录界面功能**:修改的目标是在保留...

    spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制

    "spring boot 1.5.4 集成shiro+cas实现单点登录和权限控制" Spring Boot 1.5.4 集成 Shiro+Cas 实现单点登录和权限控制是指在 Spring Boot 应用程序中使用 Shiro 框架和 Cas 服务器来实现单点登录和权限控制的功能...

    cas 自定义登录页面

    CAS(Central Authentication Service)是一种广泛使用的开放源代码单点登录(Single Sign-On,SSO)框架,它允许用户通过一个中央认证服务访问多个应用系统,而无需为每个系统单独进行登录。在实际的企业环境中,...

    tomcat配置单点登录

    总结来说,Tomcat实现单点登录SSO,主要通过配置合适的Realm,结合Cookie机制,实现用户身份在多个应用间的共享。同时,理解SSO的各种实现技术,如基于Cookie、Kerberos、SAML和CAS等,有助于选择最合适的SSO解决...

    jsp如何实现单点登录

    **JSP实现单点登录(Single Sign-On,SSO)详解** 在Web应用程序中,单点登录(Single Sign-On,SSO)是一种便捷的身份验证机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需再次输入凭证。在...

    CAS SSO配置文档详解

    单点登录(Single Sign-On,简称SSO)是一种用户身份验证机制,允许用户在一个安全领域内访问多个应用系统,而无需多次输入身份验证信息。在税务行业信息化发展中,应用整合成为关键,SSO作为其核心组成部分,对于...

    前后端未分离的单点登录

    总结来说,"前后端未分离的单点登录"涉及到Java编程、SSO认证流程、CAS服务器的配置和使用,以及在非前后端分离架构下的安全性考虑。理解并实践这些知识点对于构建和维护大型企业级应用至关重要。

    完全跨域的单点登录 完全跨域的单点登录

    本篇文章将深入探讨这一主题,并基于给定的标签"SSO"、"Java"和"单点登陆"进行详细解析。 1. SSO原理: SSO的核心思想是用户只需在一个地方验证身份,然后这个验证结果可以被其他所有系统接受。这通常通过一个中心...

    统一身份认证4.1_接入文档 .doc

    CAS 通过 Ticket 机制来实现单点登录,用户首先访问 CAS 服务器,CAS 服务器对用户进行身份验证,然后颁发 Ticket,用户可以使用 Ticket 访问多个应用系统。 Security Security 是 Spring 框架中的一个模块,提供...

    jcifs-ext-0.9.4.jar/jcifs-1.3.3.jar

    描述中提到的"单点登陆(Single Sign-On,简称SSO)"是一种身份验证机制,允许用户在一次登录后访问多个相互信任的应用系统,无需为每个系统分别输入凭证。CAS(Central Authentication Service)是一个广泛使用的...

    spring security2 安全手册(牛人写的)

    - **运行配置了CAS的子系统**:部署并运行配置了CAS的子系统,确保单点登录功能正常工作。 - **为CAS配置SSL** - **生成密钥**:生成用于HTTPS连接的密钥。 - **为jetty配置SSL**:配置jetty服务器以支持HTTPS。 ...

Global site tag (gtag.js) - Google Analytics