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, лучше ли построить ухо вместо войны, чтобы указать область?