I need pass a full name from CAS to my apps. After checking several
documents, my casServiceValidationSuccess.jsp was changed to:

--- Start ---
*<%@ page pageEncoding="UTF-8"%>*
<%@ 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}">

<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
                </c:forEach>
            </cas:attributes>
        </c:if>
*    </cas:authenticationSuccess>
</cas:serviceResponse>
--- End ---

Things work fine if the full name is English characters. But if it is
Chinese, my app will get an exception:

--- Start ---
2010-04-06 23:16:22,544 ERROR XmlUtils:152 - org.xml.sax.SAXParseException:
The element type "cas:fullName" must be terminated by the matching end-tag
"</cas:fullName>".
org.xml.sax.SAXParseException: The element type "cas:fullName" must be
terminated by the matching end-tag "</cas:fullName>".
        at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
        at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
        at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown
Source)
        at
org.jasig.cas.client.util.XmlUtils.getTextForElement(XmlUtils.java:150)
        at
org.jasig.cas.client.validation.Cas20ServiceTicketValidator.parseResponseFromServer(Cas20ServiceTicketValidator.java:76)
        at
org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:188)
        at
org.springframework.security.cas.authentication.CasAuthenticationProvider.authenticateNow(CasAuthenticationProvider.java:131)
        at
org.springframework.security.cas.authentication.CasAuthenticationProvider.authenticate(CasAuthenticationProvider.java:117)
        at
org.springframework.security.authentication.ProviderManager.doAuthentication(ProviderManager.java:120)
        at
org.springframework.security.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:48)
        at
org.springframework.security.cas.web.CasAuthenticationFilter.attemptAuthentication(CasAuthenticationFilter.java:104)
        at
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
--- End ---

My CAS and app encoding were both set to utf-8. I understand that this is
something related to encoding, but don't know how to solve it.

Any help is appreciated. Thanks.

-- 
Bill Li(李保存)
http://BaliOnWeb.com

-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to