Пользовательский механизм безопасности в приложении Java EE 6/7

Я хотел бы создать (внедрить самостоятельно) механизм аутентификации, который будет подключен к моему приложению Java EE.

Насколько я знаю, мне нужно реализовать LoginModule и как-то связать эту реализацию с механизмами контейнера. Но проблема в том, что я не знаю, как это сделать. Может быть, вы знаете, где я могу найти пример кода или руководство по этому поводу?

Другими словами, я хотел бы заставить контейнер вызывать мои классы всякий раз, когда вызываются методы: аутентификация, вход в систему и выход из системы.

Пример реализации: метод HttpServletRequest.login будет успешно аутентифицировать только пользователей с четным числом букв в имени входа.


person pWoz    schedule 05.02.2014    source источник


Ответы (3)


Прочитав о JAAS, вы должны реализовать свой модуль входа в систему на основе org.jboss.security.auth.spi.AbstractServerLoginModule (из артефакта maven org.picetbox/picetbox). Затем разверните модуль вместе с вашим приложением и создайте правильный домен безопасности и область в файле standalone.xml WildFly, например:

<security-domain name="myDomain" cache-type="default">
  <authentication>
    <login-module code="com.example.TestLoginModule" flag="required" 
module="deployment.sample.jar"/>
  </authentication>
</security-domain>

...

<security-realm name="MyRealm">
 <authentication>
   <jaas name="myDomain"/>
 </authentication>
</security-realm>

Обратите внимание на различное поведение в разных версиях JBoss AS. 7.1.1 не позволит вам развернуть модуль входа в систему, вам придется создать отдельный модуль jboss и связать его с модулями org.picetbox и jboss.security.

Дополнительное чтение: https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration

https://docs.jboss.org/author/display/WFLY8/Security+Realms

http://java.dzone.com/articles/creating-custom-login-modules (немного устарело, но дает основную идею)

person mcmil    schedule 09.02.2014
comment
Где я могу прочитать об этом? Содержится ли он в учебнике по Jboss (WildFly)? - person pWoz; 10.02.2014
comment
Добавил несколько ссылок в пост. Сначала проверьте dzone один, он должен дать вам некоторое представление о том, что вам нужно. К сожалению, конфигурация может немного отличаться в более новых версиях JBoss (убедитесь в значении атрибута модуля). - person mcmil; 11.02.2014
comment
Спасибо за помощь. Я исследовал эту тему. Теперь я могу создать свой собственный модуль входа в систему, но у меня есть еще одна проблема. Вы можете взглянуть на это? stackoverflow.com/questions/22026078 / - person pWoz; 26.02.2014

Я считаю, что независимый от контейнера способ сделать это - использовать JASPIC (JSR 196). К сожалению, он не кажется простым, надежным или особенно хорошо документированным. Вот ссылка: http://arjan-tijms.blogspot.com/2012/11/implementing-container-authentication.html.

person Ryan    schedule 03.04.2014