Comment utiliser la protection de htpasswd dans Tomcat?
-
09-09-2019 - |
Question
Je l'ai déjà créé un fichier de base de données utilisateur en utilisant la commande htpasswd d'Apache. Ce fichier est maintenant utilisé par plusieurs autres applications comme apache et subversion.
Les utilisateurs en sont créés comme ceci:
htpasswd /path/to/users.htpasswd peter
Ce fichier utilisateur est global, et non par répertoire.
Comment puis-je faire Tomcat 6 utiliser ce même fichier en tant que domaine de la sécurité?
La solution
Il y a deux options:
-
Utiliser Apache comme une extrémité avant de la tomcat (en utilisant soit mod_jk ou mod_proxy_ajp) et l'Apache faire l'authentification. Vous trouverez des détails sur la façon de le faire
-
Si vous voulez que le tomcat faire l'authentification, alors vous devez utiliser ot autre chose que le fichier htpasswd. Il y a 4 façons d'enregistrer les informations d'identification des utilisateurs - base de données à l'aide, JNDI / LDAP, un fichier XML ou un fournisseur JAAS. Vous pouvez lire sur toutes les options dans le de Realm HOW-TO .
Autres conseils
La plupart similaire au htpasswd peut être le MemoryRealm . J'avais moi-même des problèmes pour trouver un exemple simple comment l'utiliser, donc je posterai un code d'exemple simple ici:
-
Mettre en place un rôle, nom d'utilisateur et mot de passe dans tomcat-users.xml
-
Votre web.xml doit contenir quelque chose comme:
<security-constraint> <web-resource-collection> <web-resource-name> My Protected WebSite </web-resource-name> <url-pattern> /* </url-pattern> <http-method> GET </http-method> <http-method> POST </http-method> </web-resource-collection> <auth-constraint> <!-- the same like in your tomcat-users.conf file --> <role-name> test </role-name> </auth-constraint> </security-constraint> <login-config> <auth-method> BASIC </auth-method> <realm-name> Basic Authentication </realm-name> </login-config> <security-role> <description> Test role </description> <role-name> test </role-name> </security-role>
-
Ajoutez ceci à votre fichier server.xml:
<Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
Pour sécuriser l'accès à votre Tomcat webapp, vous pouvez mettre en œuvre votre simple contrainte de sécurité (par exemple dans /var/lib/tomcat7/webapps/*/WEB-INF/web.xml
) comme ci-dessous (ajoutez juste avant </web-app>
fin):
<!-- This security constraint protects your webapp interface. -->
<login-config>
<!-- Define the Login Configuration -->
<auth-method>BASIC</auth-method>
<realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<!-- Specifying a Secure Connection -->
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml -->
<security-role>
<role-name>*</role-name>
</security-role>
L'élément login-config contient l'élément
auth-method
, qui spécifie la méthode d'authentification que nous utilisons, qui estBASIC
. L'élément desecurity-constraint
contient 3 éléments:web-resource-collection
,auth-constraint
etuser-data-constraint
. La collecte Web-ressource précise les parties de notre application qui nécessitent une authentification. Le/*
indique que toute l'application requiert une authentification. La auth-contrainte spécifie le rôle qu'un utilisateur doit avoir pour accéder aux ressources protégées. L'utilisateur-données contrainte de de transport peut être garantieNONE
,CONFIDENTIAL
ouINTEGRAL
. Nous avons mis àNONE
, ce qui signifie que la redirection versSSL
n'est pas nécessaire lorsque vous essayez de frapper la ressource protégée.
Assurez-vous également que vous avez la ligne:
<Realm className="org.apache.catalina.realm.MemoryRealm" />
dans votre conf/server.xml
(section Engine
).
Si vous ne l'avez pas changé tous les fichiers de configuration, s'il vous plaît examiner le fichier conf/tomcat-users.xml
dans votre installation (locate tomcat-users.xml
). Ce fichier doit contenir les informations d'identification pour vous permettre d'utiliser Tomcat webapp.
Par exemple, pour ajouter le rôle de gestionnaire IUG à un utilisateur tomcat
nommé avec un mot de passe s3cret
, ajoutez ce qui suit dans le fichier de configuration ci-dessus:
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
Ensuite, vous pouvez accéder à votre gestionnaire de webapps de /manager/html
(par exemple rechargeant après les changements de configuration).
En savoir plus: App Manager HOW-TO <. / p>
Ensuite, redémarrez votre Tomcat et lors de l'accès à votre webapp, il devrait vous demander les bonnes références.
Voir aussi:
- authentification HTTP de base en Java à le site Oracle
- Spécification d'un mécanisme d'authentification en Java sur le site Oracle
- Configuration Realm HOW-TO sur le site Apache Tomcat
- Mise en place rôle de sécurité basée à tomcat
- Comment puis-je utiliser L'authentification de base avec Tomcat?