Правила безопасности и переписывание правил 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 ответ

Я предпочитаю защищать ресурсы таким образом:

  1. Все.xhtml ресурсы размещены /WEB-INF/views (они становятся недоступными по прямой ссылке)

  2. Все мои настройки безопасности используют переписанные 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>
Другие вопросы по тегам