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);
%>
相关推荐
目录: 第2016期:云计算软件维护经验分享 ...第2025期:CAS存储模块详解(上)——OCFS2文件系统分布式锁介绍 第2026期:CAS存储模块详解(下)——磁盘锁与RBD介绍 第2027期:CAS CVM管理平台详解
NULL 博文链接:https://starbhhc.iteye.com/blog/2302902
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)
开始您的 CAS 冒险的好地方!入门下载并安装适当的 JDK 1.7 ( )。 确保您下载的是 JDK 而不是 JRE。... 对于外部配置, cas.properties文件的位置由 2 个专有系统属性(按优先顺序)控制: etc.dir和etc.root 。
本文档详细介绍了cas单点登录的流程和相关参数的转移过程
cas的jar包,包括: 服务器端:cas-server-3.4.10-release.zip 客户端:cas-client-3.2.1-release.zip
cas-client-3.2.1和cas-server-3.5.2
cas4:Cas 4
Tomcat6.0.29 JDK6 CAS Server版本:cas-server-3.4.10 CAS Client版本:cas-client-3.2.1
- the cas-shiro-demo-app module is a demo web application which uses the CAS Shiro support library with protected area requiring CAS authentication : http://shiro.apache.org/cas.html - the cas-shiro-...
中央认证服务(CAS)介绍欢迎来到(通常称为CAS)的主页。 CAS是用于Web的企业多语言单点登录解决方案,它试图成为满足身份验证和授权需求的综合平台。 CAS是一个开放且有据可查的身份验证协议。 协议的主要实现是...
CAS 介绍 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录...CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:
cas-gradle-overlay-template:CAS Gradle叠加:通用CAS gradle战争叠加,以练习最新版本的CAS
赠送jar包:shiro-cas-1.2.3.jar; 赠送原API文档:shiro-cas-1.2.3-javadoc.jar; 赠送源代码:shiro-cas-1.2.3-sources.jar; 赠送Maven依赖信息文件:shiro-cas-1.2.3.pom; 包含翻译后的API文档:shiro-cas-...