Правила безопасности и переписывание правил Glassfish с PrettyFaces
У меня проблема с защитой страницы моего приложения. Вот мое правило переписывания PrettyFaces:
<url-mapping id="cms">
<pattern value="/administrator" />
<view-id value="/faces/backend/index.xhtml" />
</url-mapping>
и вот моя безопасная конфигурация в web.xml:
<security-constraint>
<display-name>Admin Pages</display-name>
<web-resource-collection>
<web-resource-name>Protected Admin Area</web-resource-name>
<description/>
<url-pattern>/faces/backend/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>JDBCRealm</realm-name>
<form-login-config>
<form-login-page>/faces/login/login.xhtml</form-login-page>
<form-error-page>/faces/login/loginerror.xhtml</form-error-page>
</form-login-config>
</login-config>
Как вы можете видеть, я хотел бы защитить все представления под:
/faces/backend/*
но проблема в том. Когда я иду в URL (переписать), как:
http://mydomain/administrator
Приложение должно перенаправить на страницу входа, так как этот URL-адрес ведет к защищенному просмотру в / Faces/ Backend/*. Но пользователь может войти на этой странице.
Когда я использую URL, как:
http://mydomain/faces/backend/index.xhtml
Безопасная работа правильная. Но я бы тоже хотел обеспечить правило перезаписи. Как это исправить? Я буду благодарен за помощь.
1 ответ
Я предпочитаю защищать ресурсы таким образом:
Все.xhtml ресурсы размещены
/WEB-INF/views
(они становятся недоступными по прямой ссылке)Все мои настройки безопасности используют переписанные URL
<web-resource-collection> <web-resource-name>protected-pages</web-resource-name> <url-pattern>/administration/*</url-pattern> <url-pattern>/moderation/*</url-pattern> </web-resource-collection>
Или вы можете использовать несколько шаблонов url для защиты своих ресурсов (но это не лучшее решение)
<url-pattern>/faces/backend/*</url-pattern> <url-pattern>/administrator</url-pattern>