<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <display-name>iParapheur Surf</display-name>

    <!-- For GZIP Conversion and Font download - Avoid errors -->
    <mime-mapping>
        <extension>json</extension>
        <mime-type>text/html</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>woff</extension>
        <mime-type>application/x-font-woff</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>ttf</extension>
        <mime-type>font/truetype</mime-type>
    </mime-mapping>

    <!-- Enables clean URLs with JSP views e.g. /welcome instead of /page/welcome -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter>
        <filter-name>AuthenticationFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <!-- CAS FILTERS -->
    <filter>
        <filter-name>CAS Authentication Filter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://{cas-server-base}{cas-server-login}</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>{parapheur-server}</param-value>
        </init-param>
    </filter>
    <filter>
        <filter-name>CAS Validation Filter</filter-name>
        <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://{cas-server-base}</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>{parapheur-server}</param-value>
        </init-param>
    </filter>

    <!-- KEYCLOAK BEGIN
    <filter>
        <filter-name>Keycloak Filter</filter-name>
        <filter-class>org.keycloak.adapters.servlet.KeycloakOIDCFilter</filter-class>
        <init-param>
            <param-name>keycloak.config.file</param-name>
            <param-value>/opt/iParapheur/keycloak.json</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>Keycloak Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    KEYCLOAK END -->

    <!-- Added in 4.7.12 to connect to OIDC provider(s) -->
    <filter>
        <filter-name>OAuth2 Filter</filter-name>
        <filter-class>org.adullact.iparapheur.auth.OAuth2Filter</filter-class>

        <init-param>
            <param-name>enabled</param-name>
            <param-value>false</param-value>
        </init-param>

        <init-param>
            <param-name>well-known-url</param-name>
            <param-value>https://auth.libriciel.fr/auth/realms/Recette/.well-known/openid-configuration</param-value>
        </init-param>

        <init-param>
            <param-name>client-id</param-name>
            <param-value>parapheur</param-value>
        </init-param>

        <init-param>
            <param-name>client-secret</param-name>
            <param-value>xzLmT2v6wl3ZGEetPjDdKuyw1mv0KsTc</param-value>
        </init-param>

        <init-param>
            <param-name>redirect-uri</param-name>
            <param-value>https://iparapheur.dom.local/iparapheur/</param-value>
        </init-param>

        <init-param>
            <param-name>scope</param-name>
            <param-value>openid profile</param-value>
        </init-param>

        <init-param>
            <param-name>username-field</param-name>
            <param-value>preferred_username</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>OAuth2 Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>AuthenticationFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- CAS BEGIN
    <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>
    CAS END -->
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Spring MVC Dispatcher Servlet -->
    <servlet>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/web-application-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <url-pattern>/service/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/*</param-value>
    </context-param>

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

</web-app>
