Может ли информация о домене безопасности JAAS указываться только в дескрипторах развертывания для конкретного сервера? - PullRequest
1 голос
/ 28 июня 2011

Я выполняю аутентификацию на основе форм в JSF и могу заставить ее работать, но для указания информации о домене безопасности JAAS требуется дескриптор конкретного сервера.

например. на JBoss 6 мне нужно WEB-INF/jboss-web.xml со следующим:

<jboss-web>
    <security-domain>java:/jaas/myAppDomain</security-domain>
</jboss-web>

На стеклянной рыбе нечто подобное должно быть в WEB-INF/sun-web.xml.

Есть ли независимый от поставщика способ сделать это в EE6? А если нет, то почему?

1 Ответ

0 голосов
/ 10 июля 2011

Есть ли независимый от поставщика способ сделать это в EE6?

Да, есть.Вам необходимо указать имя области в файле web.xml, аналогично показанному ниже:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
...
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>myRealm</realm-name> <!-- the name of the realm created in the application server should be specified here -->
        <form-login-config>
            <form-login-page>/login.xhtml</form-login-page>
            <form-error-page>/login-error.xhtml</form-error-page>
        </form-login-config>
    </login-config>
...
</web-app>

Вышеуказанное работает в Glassfish без каких-либо записей в sun-web.xml,за исключением сопоставления роли и группы (которое используется для обеспечения ограничений авторизации).

Указание элемента security-domain в дескрипторе развертывания JBoss - лучший подход, когда у вас есть веб-модуль и модуль EJB, которые должен использовать принципалы только из одного Security Manager в JBoss (и эквивалентные реализации в других контейнерах).

Учитывая, как работают модули входа в систему JAAS и что нельзя указать область для аутентификации в ejb-jar.xml, вполне возможно, что контейнер EJB разрешит вызов бизнес-метода на основе успешного ответа аутентификации из другого модуля входа.(чем то, что вы намеревались).Это будет означать, что пользователь в другой области, но в той же группе (сопоставленный с разрешенной ролью для бизнес-метода), может вызывать бизнес-метод.Во избежание этого сценария можно указать домен безопасности в дескрипторе развертывания для конкретного поставщика.

Примечание. Я не уверен в поведении контейнера при выборе модуля входа в систему JAAS для EJB, развернутых вWAR.

...