2009-05-05 3 views
2

У меня есть Java-webapp. Webapp упакован как военный файл. Эти военные файлы позволяют статический контент, который напрямую доставляется через HTTP. Для сервлетов в этой войне я могу выполнить HTTP-аутентификацию (реализовать ее с помощью самого сервлета). Но я также хочу HTTP-auth для статического контента. Как я могу это понять?В Java-webapp (war), как я могу использовать HTTP-auth для статического контента?

ответ

2

Создайте класс, который реализует javax.servlet.Filter. См. The Essentials of Filters

Главный метод: doFilter, который передается объектами ServletRequest, ServletResponse и FilterChain. Здесь вы применяете аутентификацию.

Затем объявить фильтр в web.xml и отображения фильтра следующим образом (карты каждому запросу)

<filter> 
      <filter-name>Authentication Filter</filter-name> 
      <filter-class> 
        com.nfsdsystems.security.filters.AuthenticationFilter</filter-class> 
    </filter> 
    <filter-mapping> 
      <filter-name>Authentication Filter</filter-name> 
      <url-pattern>/*</url-pattern> 
    </filter-mapping> 
+0

Это отлично работает для меня. Я написал собственный фильтр. – Mnementh

3

Put статичные HTML файлы в direcotry и определяют свои ограничения безопасности в вашем web.xml. Сопоставьте ограничения с соответствующей ролью.

<security-constraint> 
     <display-name>securedResources</display-name> 
     <web-resource-collection> 
      <web-resource-name>securedRes</web-resource-name> 
      <url-pattern>/secured/*</url-pattern> 
      <http-method>GET</http-method> 
      <http-method>PUT</http-method> 
      <http-method>HEAD</http-method> 
      <http-method>TRACE</http-method> 
      <http-method>POST</http-method> 
      <http-method>DELETE</http-method> 
      <http-method>OPTIONS</http-method> 
     </web-resource-collection> 
     <auth-constraint> 
      <description> 
      authenticatedUser_securedRes</description> 
      <role-name>authenticatedUsed</role-name> 
     </auth-constraint> 
    </security-constraint> 
+0

Это было бы предпочтительным способом сделать это с помощью царств. – Nathan

+0

Как я могу определить имена пользователей/паролей таким образом? – Mnementh

+0

Это зависит от сервера приложений, который вы используете. Для Tomcat, google "jdbc realm configuration". Для websphere предпочтительным способом будет ldap. – svachon

 Смежные вопросы

  • Нет связанных вопросов^_^