Domanda

Ho già creato un file di database utente utilizzando il comando htpasswd di Apache. Questo file è ora utilizzato da molte altre applicazioni come Apache e la sovversione.

Gli utenti vengono creati in questo modo:

htpasswd /path/to/users.htpasswd peter

Questo file utente è globale, non per directory.

Come posso fare Tomcat 6 uso questo stesso file come un regno di sicurezza?

È stato utile?

Soluzione

Ci sono due opzioni:

  1. Usa Apache come front-end per il gatto (utilizzando mod_jk o mod_proxy_ajp) e l'Apache fare l'autenticazione. È possibile trovare i dettagli su come fare in modo qui

  2. Se si desidera che il gatto di fare l'autenticazione, quindi è necessario l'uso del ot qualcosa di diverso rispetto al file htpasswd. Ci sono 4 modi per salvare le credenziali degli utenti - che utilizzano database JNDI / LDAP, un file XML o un fornitore di JAAS. Si può leggere su tutte le opzioni nel Realm Configurazione HOW-TO .

Altri suggerimenti

La maggior parte simile al htpasswd può essere il MemoryRealm . Ho avuto problemi a me stesso di trovare un semplice esempio di come usarlo, quindi vi posterò un esempio di codice facile qui:

  1. Impostare un ruolo, username e password in Tomcat-users.xml

  2. Il tuo web.xml dovrebbe contenere qualcosa come:

       <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. Aggiungi questo al vostro file server.xml:

    <Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
    

Per proteggere l'accesso al vostro webapp Tomcat, è possibile implementare il vincolo di sicurezza semplice (ad esempio in /var/lib/tomcat7/webapps/*/WEB-INF/web.xml), come di seguito (basta aggiungere prima </web-app> finale):

<!-- 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'elemento login-config contiene l'elemento auth-method, che specifica il metodo di autenticazione che usiamo, che è BASIC. L'elemento security-constraint contiene 3 elementi: web-resource-collection, auth-constraint e user-data-constraint. Il web-risorsa-raccolta specifica le parti della nostra applicazione che richiedono l'autenticazione. Il /* indica che l'intera applicazione richiede l'autenticazione. L'auth-vincolo specifica il ruolo che un utente ha bisogno di avere al fine di accedere alle risorse protette. trasporto di garanzia dell'utente-dati-vincolo può essere NONE, CONFIDENTIAL o INTEGRAL. Abbiamo impostato a NONE, il che significa che il reindirizzamento a SSL non è necessario quando si tenta di colpire la risorsa protetta.

Inoltre, assicurarsi che la linea'VE:

<Realm className="org.apache.catalina.realm.MemoryRealm" />

all'interno del vostro conf/server.xml (sezione Engine).

Se non si è modificato alcun file di configurazione, si prega di esaminare il file conf/tomcat-users.xml nell'installazione (locate tomcat-users.xml). Questo file deve contenere le credenziali per consentire di utilizzare Tomcat webapp.

Ad esempio, per aggiungere il ruolo di manager-gui per un utente denominato tomcat con una password di s3cret, aggiungere il seguente al file di configurazione di cui sopra:

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

Poi si può accedere al tuo direttore webapps da /manager/html (per esempio ricaricare dopo le modifiche di configurazione).

Per saperne di più: Responsabile App HOW-TO <. / p>

Quindi riavviare il Tomcat e quando l'accesso al tuo webapp, che si dovrebbe chiedere le giuste credenziali.

Vedi anche:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top