2013-05-01 2 views
0

je dois contrôler l'accès URL selon IP du client sur tomcat 7.0.39 Ce que j'ai trouvé http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_FilterURL accès controll par IP dans tomcat7

mais je ne comprends pas tout de lui. Avez-vous des exemples supplémentaires, des totalisateurs, etc.

ce dont j'ai réellement besoin est d'autoriser tous les accès IP, par exemple. "http://base_url/a/b/c" et permettre localhost/accès 127.0.0.1 "http://base_url/a"

Je ne comprenais pas comment faire correspondre « tout » IP ou si je besoin de plusieurs filtres ou plusieurs entrées dans le filtre.

Merci.

+0

Vous avez vu la réponse ci-dessous? Était-ce utile? – Michael

Répondre

1

En fait, vous devez protéger seulement /base_url/a, puisque d'autres adresses sont ouvertes à toutes les adresses IP. Définir 2 filtres Tout d'abord pour permettre l'accès local par IP, seconde par localhost:

<filter> 
    <filter-name>RemoteAddressFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class> 
    <init-param> 
    <param-name>allow</param-name> 
    <param-value>127.0.0.1|::1|0:0:0:0:0:0:0:1</param-value> 
    </init-param> 
    <init-param> 
    <param-name>deny</param-name> 
    <param-value>192\.\d+\.\d+\.\d+</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>RemoteAddressFilter</filter-name> 
    <url-pattern>/a/*</url-pattern> 
</filter-mapping> 


<filter> 
    <filter-name>RemoteHostFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.RemoteHostFilter</filter-class> 
    <init-param> 
    <param-name>allow</param-name> 
    <param-value>localhost</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>RemoteHostFilter</filter-name> 
    <url-pattern>/a/*</url-pattern> 
</filter-mapping> 
+0

Merci, mais il ne parvient pas à bloquer l'accès externe. des idées? – ozma

+0

avec l'exemple sur la documentation Tomcat (url-pattern = "/ *") les adresses IP externes sont bloquées pour tout le site web (/ a/b/c) avec url-pattern = "/ a/*" personne n'est bloqué. – ozma

+0

J'ai mis à jour l'exemple. Utilisez ' refuser'. Vous devriez trouver la configuration qui correspond à vos besoins – Michael

0

Si le filtre que vous écrivez ne fonctionne pas la façon dont vous vous attendez à, vous pouvez toujours mettre en œuvre votre propre en utilisant l'API javax.servlet.Filter (http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html).

Il y a des exemples couple ici:

L'écriture d'un filtre Servlet est simple et vous pouvez le faire atteindre plus que le filtrage IP.

0

Merci à tous,

Finalement, j'ai créé mon propre filtre c'est ainsi:

  • créer classe qui étend BaseFilter et implament doFilter.
  • fichiers jar requis: catalina.jar, servlet_api.jar, tomcat_juli.jar
  • dans les moyens chain.doFilter exécutant filtre ne filtre continuer cette connexion (ou l'utiliser si plus filtres existants)
  • INIT méthode peut également être utilisé pour lire les paramètres de web.xml (où vous mettez la configuration du filtre)
  • ajouter votre nouveau jar (avec le filtre dans le répertoire lib de Tomcat) ajouter le nom jar à Tomcat/conf/catalina.properties par défaut jar scanner

BR.