Come utilizzare la protezione htpasswd in Tomcat?
-
09-09-2019 - |
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?
Soluzione
Ci sono due opzioni:
-
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
-
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:
-
Impostare un ruolo, username e password in Tomcat-users.xml
-
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>
-
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'elementosecurity-constraint
contiene 3 elementi:web-resource-collection
,auth-constraint
euser-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ò essereNONE
,CONFIDENTIAL
oINTEGRAL
. Abbiamo impostato aNONE
, il che significa che il reindirizzamento aSSL
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:
- autenticazione HTTP di base in Java a sito Oracle
- specificare un meccanismo di autenticazione in Java presso la sede Oracle
- Configurazione realm HOW-TO presso il sito di Apache Tomcat
- Impostazione sicurezza basata ruolo in Tomcat
- Come si usa L'autenticazione di base con Tomcat?