Как использовать 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).

Другие вопросы по тегам