Как использовать JASPI/JASPIC на Jetty?
На главной странице проекта Jetty упоминается совместимость с JASPI (JASPIC/JSR 196).
Тем не менее, дистрибутив Jetty 8, похоже, не содержит классов, связанных с JASPI. Есть jetty-security-8.1.8.v20121106.jar
jar в [jetty home]/lib, но этот не содержит ни одного из типов JASPIC/JASPI.
Документация по JASPIC/JASPI на Jetty wiki является только заполнителем и не содержит никакой информации.
После некоторого поиска в Google я нашел JavaDocs на сайте Eclipse и обнаружил, что где-то должен быть jetty-jaspi-8.1.8.v20121106.jar. Эти JavaDocs также включены в дистрибутив. Наконец, в Github появляется репо с пристанью и джаспи.
Очевидно, что есть некоторая доступная поддержка, но почему эти классы, по-видимому, отсутствуют в дистрибутиве Jetty и где находится документация о том, как это настроить? Что мне не хватает?
1 ответ
https://github.com/guofengzh/jaspi-on-jetty является рабочим примером JASPI API в Jetty, который использует geronimo-jaspi, который, в свою очередь, обращается к модулям jetty-jaspi для аутентификации. Geronimo, кажется, предоставляет механизм конфигурации и отказывается от самих модулей аутентификации в этом примере.
Кажется, что вы можете выбрать форму, дайджест или основные методы аутентификации. Быстрая проверка формы входа в систему показала, что она работает.
Фабрика аутентификации Jaspi настроена в jetty-web.xml следующим образом:
<Set name="securityHandler">
<New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
<Set name="name">JAASRealm</Set>
<Set name="loginModuleName">jaas</Set>
</New>
</Set>
<Set name="authenticatorFactory">
<New class="org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory" />
</Set>
</New>
</Set>
И на файл конфигурации jaspi ссылаются через системное свойство в файле pom.xml:
<systemProperty>
<name>org.apache.geronimo.jaspic.configurationFile</name>
<value>./conf/jaspi/form-test-jaspi-2.xml</value>
</systemProperty>
Кроме того, упомянутая вами библиотека jaspi добавляется в pom как зависимость вместе с реализацией geronimo jaspi:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaspi</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.components</groupId>
<artifactId>geronimo-jaspi</artifactId>
<version>2.0.0</version>
</dependency>
Я также не смог найти документацию по теме. Кажется, что модуль jetty-jaspi не является одним из стандартных параметров запуска, но его можно добавить в каталог ${jetty.home/lib/ext} (см. Раздел Загрузка классов Jetty).