由CAS引起的APEX应用构建器的编码问题 [英] Encoding problem with APEX app builder caused by CAS

查看:148
本文介绍了由CAS引起的APEX应用构建器的编码问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一段时间以来,我在APEX应用程序构建器/sql研讨会上遇到了问题.有一个编码问题(APEX必须提供东欧字符). 最后,我找到了问题的根源.我已经通过web.xml(APEX在Tomcat/ORDS上)在APEX中实现了CAS sso.没有CAS,evrything可以正常工作,但是我需要它.

I have a problem with APEX app builder/sql workshop for a while. There is a encoding issue (APEX must serve EastEuropean chars). Finnaly i found the source of the issue. I have implemented a CAS sso into APEX thru web.xml (APEX is on Tomcat/ORDS). Without CAS evrything is working fine, but i need it.

下面是web.xml配置.

Below there is the web.xml configuration.


    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>**************</param-value>
        </init-param>
    </filter>
        <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>




    <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>

    <filter>
        <filter-name>CAS Authentication Filter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.Saml11AuthenticationFilter</filter-class>

        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>****************</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>***************</param-value>
        </init-param>
        </filter>

    <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>org.jasig.cas.client.validation.Saml11TicketValidationFilter</filter-class>

        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>****************</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>*************</param-value>
        </init-param>
        <init-param>
            <param-name>redirectAfterValidation</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>useSession</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>acceptAnyProxy</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>proxyReceptorUrl</param-name>
            <param-value>/apex/proxyUrl</param-value>
        </init-param>
        <init-param>
            <param-name>proxyCallbackUrl</param-name>
            <param-value>*************</param-value>
        </init-param>

        <init-param>
            <param-name>tolerance</param-name> 
            <param-value>12000</param-value> 
        </init-param> 
        <init-param>
            <param-name>authn_method</param-name>
            <param-value>mfa-duo</param-value>
        </init-param>
    </filter>

    <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 Validation Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>CAS Authentication Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


我尝试实现 https://github上的内容.com/apereo/java-cas-client/blob/master/README.md 例如有一个句子

I tried to implement something from https://github.com/apereo/java-cas-client/blob/master/README.md for example there is a sentence

SingleSignOutFilter可以影响字符编码.当与Atlassian Confluence等应用程序结合使用时,这一点最为明显.建议您使用显式编码对VT字符编码过滤器或Spring字符编码过滤器进行显式配置.

The SingleSignOutFilter can affect character encoding. This becomes most obvious when used in conjunction with applications such as Atlassian Confluence. It's recommended you explicitly configure either the VT Character Encoding Filter or the Spring Character Encoding Filter with explicit encodings.

但是我不知道如何实现它.当我尝试实现以下代码时,此过滤器无法正常启动,并且无法检查错误日志.

But I don't know how to implement it. When I tried to implement below code, this filter don't event start properly and I can't check logs of error.

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>

    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

问题示例: SQL Workshop>

Example of issue: SQL workshop>

select 'ł' from dual;

结果:A?

我该如何解决?

推荐答案

将CharackerEncodingFilter添加到web.xml是正确的.我找到了日志,并发现缺少类存在问题.

Adding the CharackerEncodingFilter to web.xml was correct. I found the logs and I noticed that there was a problem with missing classes.

有要求将一些.jar添加到WEB-INF/lib

There was requirment to add some .jar to WEB-INF/lib

  • org.springframework.beans
  • org.springframework.context
  • spring-web
  • org.springframework.core

tomcat重新启动后,一切正常

After tomcat restart everything works fine

这篇关于由CAS引起的APEX应用构建器的编码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆