Фильтр сервлетов вызывается несколько раз - PullRequest
0 голосов
/ 08 июля 2019

Фильтр сервлета, который используется для аутентификации, вызывается несколько раз в одном и том же запросе. Стажер не позволяет аутентифицировать пользователя, поскольку браузер продолжает загружаться бесконечно.

Ниже приведен файл web.xml-

<filter>
    <filter-name>AuthenticationFilter</filter-name>
    <filter-class>com.company.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>AuthenticationFilter</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>

Класс реализации фильтра -

public void doFilter(ServletRequest request, ServletResponse response,    FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;

AuthenticationService service = new AuthenticationService();
service.validateAuthentication(request, response);

if(!response.isCommitted()) {
    doFilter(request, response);
}

}

validateAuthentication, который выполняет проверку подлинности Azure.

2019-07-08 01:50:45,927 INFO [com.microsoft.aad.adal4j.AuthenticationAuthority] (pool-235-thread-1) [Correlation ID: 424f42b1-15e9-44e7-b2d8-84b82fe89132] Instance discovery was successful 2019-07-08 01:50:46,166 ERROR [com.microsoft.aad.adal4j.AuthenticationContext] (pool-235-thread-1) [Correlation ID: 424f42b1-15e9-44e7-b2d8-84b82fe89132] Execution of class com.microsoft.aad.adal4j.AcquireTokenCallable failed.: com.microsoft.aad.adal4j.AuthenticationException: {"error_description":"AADSTS500112: The reply address 'http://docker.azurewebsites.net/' does not match the reply address 'https://docker.azurewebsites.net/' provided when requesting Authorization code.\r\nTrace ID: e6b5f37f-4bcd-4233-aab4-e98d725f7400\r\nCorrelation ID: 424f42b1-15e9-44e7-b2d8-84b82fe89132\r\nTimestamp: 2019-07-08 05:50:46Z","error":"invalid_client"} at com.microsoft.aad.adal4j.AdalTokenRequest.executeOAuthRequestAndProcessResponse(AdalTokenRequest.java:128) at com.microsoft.aad.adal4j.AuthenticationContext.acquireTokenCommon(AuthenticationContext.java:928) at com.microsoft.aad.adal4j.AcquireTokenCallable.execute(AcquireTokenCallable.java:70) at com.microsoft.aad.adal4j.AcquireTokenCallable.execute(AcquireTokenCallable.java:38) at com.microsoft.aad.adal4j.AdalCallable.call(AdalCallable.java:47) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

...