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é?

Était-ce utile?

La solution

Il y a deux options:

  1. 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

  2. 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:

  1. Mettre en place un rôle, nom d'utilisateur et mot de passe dans tomcat-users.xml

  2. 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>
    
  3. 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 est BASIC. L'élément de security-constraint contient 3 éléments: web-resource-collection, auth-constraint et user-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 garantie NONE, CONFIDENTIAL ou INTEGRAL. Nous avons mis à NONE, ce qui signifie que la redirection vers SSL 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:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top