Проблем с кодирането с APEX app builder, причинен от CAS

Имам проблем с APEX app builder/sql workshop за известно време. Има проблем с кодирането (APEX трябва да обслужва източноевропейски знаци). Най-накрая намерих източника на проблема. Внедрих CAS sso в APEX чрез web.xml (APEX е на Tomcat/ORDS). Без CAS всичко работи добре, но ми трябва.

По-долу има конфигурацията web.xml.


    <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 например има изречение

SingleSignOutFilter може да повлияе на кодирането на знаци. Това става най-очевидно, когато се използва заедно с приложения като Atlassian Confluence. Препоръчва се изрично да конфигурирате или филтъра за кодиране на знаци VT, или филтъра за кодиране на символи Spring с изрично кодиране.

Но не знам как да го приложа. Когато се опитах да внедря кода по-долу, този филтър не се стартира правилно и не мога да проверя регистрационните файлове за грешки.

    <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>

select 'ł' from dual;

резултат: А?

Как мога да поправя това?


person Paweł Żurkiewicz    schedule 24.03.2020    source източник


Отговори (1)


Добавянето на CharackerEncodingFilter към web.xml беше правилно. Намерих регистрационните файлове и забелязах, че има проблем с липсващи часове.

Имаше изискване за добавяне на .jar към WEB-INF/lib

  • org.springframework.beans
  • org.springframework.context
  • пролетна мрежа
  • org.springframework.core

След рестартиране на tomcat всичко работи добре

person Paweł Żurkiewicz    schedule 25.03.2020