cas service配置参考第一节。
casServiceValidationSuccess.jsp页面默认编码格式为ISO-8859-1,且在表单提交到客户端页面时,也使用IS0进行编码,为了处理中文,可以在页面上使用URLEncoder对需要传递的中文时行UTF-8编码,然后从客户端取得数据时,再做URLDecoder解码:
casServiceValidationSuccess.jsp页面,真是一个奇怪的页面,由于cas使用手工解析(没有使用任何dom解析,硬编码识别标标签的开始和标签的结束)xml的方式解析xml文件,所有,在修改此文件时,一定要加以注意:
以下是源代码:
<%@ page session="false" contentType="text/xml; charset=UTF-8"import="java.net.URLEncoder"%>
<%@ 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>
<!-- start 登录成功后获取用户的更多信息 -->
<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}">
<c:set var="val" value="${fn:escapeXml(attr.value)}"/>
<cas:${fn:escapeXml(attr.key)}><%=URLEncoder.encode((String)pageContext.getAttribute("val"),"UTF-8")%>
</cas:${fn:escapeXml(attr.key)}>
//或者:
<c:set var="val" value="${attr.value}"/>
<cas:${attr.key}><%=URLEncoder.encode((String)pageContext.getAttribute("val"),"UTF-8")%></cas:${attr.key}>
</cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</cas:attributes>
</c:if>
<!-- end -->
<!--
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
-->
<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>
</cas:authenticationSuccess>
</cas:serviceResponse>
经过编码以后的XML数据如下:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>U003</cas:user>
<cas:attributes>
<cas:pwd>1111</cas:pwd>
<cas:username>%E5%BC%A0%E4%B8%89</cas:username>
</cas:attributes>
</cas:authenticationSuccess>
</cas:serviceResponse>
可见,对中文进行了UTF-8编码。
在客户端使用URLDecoder进行解码:
以下:
<%@page import="java.net.*" %>
<%
Assertion assertion = AssertionHolder.getAssertion();
AttributePrincipal ap = assertion.getPrincipal();
String id = ap.getName();
Map<String,Object> att = ap.getAttributes();
out.print("<br/>"+id);
out.print("<br/>"+att);
String name = URLDecoder.decode(""+att.get("username"), "UTF-8");
out.println("<br/>"+name);
%>
相关推荐
这里,`JdbcServiceRegistryDaoImpl`是CAS服务注册表的实现,我们将`secondaryDataSource`注入其中,使其使用第二个数据库进行服务注册操作。 当然,多数据源配置可能会更复杂,特别是当你需要在事务管理中同时操作...
目录: 第2016期:云计算软件维护经验分享 ...第2025期:CAS存储模块详解(上)——OCFS2文件系统分布式锁介绍 第2026期:CAS存储模块详解(下)——磁盘锁与RBD介绍 第2027期:CAS CVM管理平台详解
NULL 博文链接:https://jerry-doit.iteye.com/blog/724436
[置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析 http://blog.csdn.net/ae6623/article/details/8848107 目 录 1 引言 4 1.1 摘要 4 1.2 范围 4 1.3 读者对象 4 1.4 关键词 4 2 ...
第2期:CAS开局指导 第3期:CAS产品虚拟机生命周期管理 第4期:ONEStor开局指导介绍 第5期:ONEStor概述和产品维护 第6期:H3C UIS 6.0超融合产品介绍及开局指导 第7期:H3C UIS6.0超融合产品维护 第8期:云...
包含翻译后的API文档:cas-client-core-3.2.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.jasig.cas.client:cas-client-core:3.2.1; 标签:jasig、client、cas、core、中英对照文档、jar包、...
资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)
资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)
2. **CAS Client**:即我们的jar包,它包含了一组Java类和接口,使得应用程序能够与CAS服务器交互,处理用户的登录和验证过程。 3. **Service URL**:每个应用都有一个服务URL,用于标识自身,CAS服务器会根据这个...
**Cas Server 3.4.2 和 Cas Client 3.1.6 源代码解析** CAS(Central Authentication Service)是一种广泛使用的开放源代码单一登录(Single Sign-On, SSO)框架,它允许用户通过一个认证入口点访问多个应用系统,...
1. **认证协议**: CAS支持多种认证协议,如CAS Protocol(版本1, 2, 3),SAML 1.1, SAML 2.0等,允许与其他系统集成。 2. **服务管理**: CAS Server维护一个服务注册表,其中包含所有需要SSO保护的应用。管理员可以...
5. **依赖库**:CAS运行所需的第三方库,包括Spring框架、Apache HttpClient等,这些库被用来处理HTTP请求、数据库连接等。 描述中的“CAS实现SSO单点登录”意味着CAS的主要功能就是提供SSO服务。它通过代理认证...
2. **CAS服务器**: CAS服务器是认证的核心,负责处理用户的登录请求,验证用户凭证,并生成服务票证(Service Ticket)。"cas-server-3.4.11-release.zip"中可能包含: - 服务器应用:如WAR文件,可部署在Tomcat...
2. **协议支持**:CAS支持多种协议,如CAS原生协议、SAML 1.1和2.0、OAuth 2.0、OpenID Connect等,使得CAS能够与其他系统(如Web应用程序、APIs等)无缝集成。 3. **服务管理**:CAS提供了一个服务注册中心,可以...
2. **协议支持**:CAS 4.0.0支持多种协议,包括CAS v1、v2、v3以及SAML 1.1,这些协议允许与其他身份验证系统进行互操作。此外,还支持OAuth和OpenID Connect,使得现代Web应用和移动应用可以轻松集成。 3. **服务...
2. **协议支持**:CAS支持多种认证协议,如CAS协议本身、SAML 1.1/2.0、OAuth、OpenID Connect等,这些协议使CAS能与各种不同的应用和服务进行交互。 3. **票证(Ticket)机制**:CAS通过票证(Ticket)实现认证...
- **Jasig Filter**:CAS 客户端通常通过 Jasig Filter 实现与服务端的通信,过滤器拦截请求并处理 CAS 的票据(ticket)。 3. **认证流程**:在 CAS 5.2.0 中,典型的认证流程包括预认证(pre-authentication)、...
2. **协议支持**:CAS支持多种协议,如CAS Protocol、SAML 1.1、SAML 2.0等,这些协议提供了与其他系统集成的能力,使得SSO不仅限于Java应用。 3. **部署与配置**:CAS-4.0.1可以作为一个独立的Web应用运行在Tomcat...
2. **服务管理**:CAS服务器维护了一个服务注册表,其中记录了所有可以使用SSO的受保护应用。管理员可以通过配置文件或Web界面添加、删除和管理服务。 3. **票证系统**:CAS的核心是票证(Ticket)系统,包括服务...