Наше приложение использует sparkjava http://sparkjava.com/ в качестве среды REST. Сервер причала встроен в приложение (sparkjava по умолчанию). Мы также используем Spring для внедрения зависимостей.
Для обеспечения аутентификации AD нам нужно интегрировать NegotiateSecurityFilter вафли.
Согласно документации по waffle и нескольким онлайн-ресурсам, включая stackoverflow, требуется DelegatingFilterProxy с именем springSecurityFilterChain.
Но поскольку мы не используем Spring MVC, я должен добавить его следующим образом:
ServletContextHandler sparkContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
sparkContext.addFilter(new FilterHolder( new DelegatingFilterProxy( "springSecurityFilterChain" ) ),"/*", EnumSet.allOf( DispatcherType.class ));
И поскольку ContextLoaderListener еще не существует, необходимо добавить следующим образом:
sparkContext.addEventListener( new ContextLoaderListener() );
Но это дает ошибку «Невозможно инициализировать контекст, потому что уже присутствует контекст корневого приложения — проверьте, есть ли у вас несколько ContextLoader» во время запуска сервера.
Пожалуйста, дайте мне знать решение в этом сценарии, если вы успешно интегрировали Spring-Security DelegatingFilterProxy со встроенными причалами и sparkjava (без использования Spring MVC).