Java EE 6 Программная безопасность, Glassfish и JDBC царство

Я изучаю способы обеспечения программной безопасности на чистом Java EE, особенно для пользователей при входе, на основе области jdbc с моего сервера Glassfish.

Таким образом, в основном, в моем сервлете входа я делаю

String username = request.getParameter("username");
String password = request.getParameter("password");

try {
    request.login(username, password);
....

Ничего не делая в моем web.xml, используется область (файл) по умолчанию. Я не хочу этого, я хочу использовать мой jdbcRealm с именем jdbcsecurerealm.

Поэтому я добавляю следующее в мой web.xml

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>jdbcsecurerealm</realm-name>
</login-config>

Обратите внимание, что я не добавляю form-login-config для определения form-login-page и form-error-page.

Тогда, если я определю ограничения безопасности, такие как

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin Pages</web-resource-name>
        <description></description>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>administrator</role-name>
    </auth-constraint>
</security-constraint>

хорошо ... это работает! Request.login проверяет мой jdbcRealm, и если я пытаюсь получить доступ к защищенным страницам без входа в систему, я получаю хороший 403.

Но кажется, что я смешиваю декларативную безопасность и программную безопасность, потому что я чувствую, что мне следует не объявлять что-либо внутри web.xml, а использовать request.isUserInRole.

Вопрос:

Я обращаюсь к специфическому поведению Glassfish или мне разрешено использовать программную защиту (request.login) с областью jdbc, определенной в web.xml, без form-login-config?

Обновить Я только что видел, что есть возможность указать область внутри glassfish-application.xml, лучше ли построить ухо вместо войны, чтобы указать область?

Ответы на вопрос(2)

Ваш ответ на вопрос