Cómo utilizar la protección htpasswd en Tomcat?
-
09-09-2019 - |
Pregunta
Ya he creado un archivo de base de datos de usuario con el comando htpasswd de Apache. Este archivo ahora es utilizado por varias otras aplicaciones como Apache y la subversión.
Los usuarios se crean en este aspecto:
htpasswd /path/to/users.htpasswd peter
Este archivo de usuario es global, no por directorio.
¿Cómo puedo hacer uso de Tomcat 6 de este mismo archivo como un reino de seguridad?
Solución
Hay dos opciones:
-
Usar Apache como interfaz para el gato (usando mod_jk o mod_proxy_ajp) y el Apache hacer la autenticación. Puede encontrar más detalles sobre cómo hacerlo aquí
-
Si desea que el Tomcat para hacer la autenticación, entonces es necesario el uso del ot algo más que el archivo htpasswd. Hay 4 maneras de ahorrar credenciales de los usuarios - utilizando la base de datos, JNDI / LDAP, un archivo XML o un proveedor de JAAS. Usted puede leer acerca de todas las opciones en el configuración HOW-TO .
Otros consejos
Los más similar a la htpasswd puede ser el MemoryRealm . Yo he tenido problemas para encontrar un ejemplo sencillo de cómo usarlo, así que voy a publicar un código de ejemplo fácil aquí:
-
Configurar un papel, nombre de usuario y contraseña en Tomcat-users.xml
-
Su web.xml debe contener algo como:
<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>
-
Agregue esto a su archivo server.xml:
<Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
Para asegurar el acceso a la aplicación de web Tomcat, puede implementar su sencilla restricción de seguridad (por ejemplo, en /var/lib/tomcat7/webapps/*/WEB-INF/web.xml
) de la siguiente manera (sólo añadir que antes de poner fin a </web-app>
):
<!-- 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>
El elemento login-config contiene el elemento
auth-method
, que especifica el método de autenticación que utilizamos, que esBASIC
. El elementosecurity-constraint
contiene 3 elementos:web-resource-collection
,auth-constraint
, yuser-data-constraint
. El web-resource-colección especifica las partes de nuestra aplicación que requieren autenticación. El/*
indica que toda la aplicación requiere autenticación. El auth-limitación especifica el papel que un usuario tiene que tener con el fin de acceder a los recursos protegidos. el transporte de garantía del usuario-data-restricción se puedeNONE
,CONFIDENTIAL
oINTEGRAL
. Hemos establecido aNONE
, lo que significa que volver a dirigir aSSL
no es necesario cuando se trata de golpear al recurso protegido.
También asegúrese de que la línea He:
<Realm className="org.apache.catalina.realm.MemoryRealm" />
dentro de su conf/server.xml
(sección Engine
).
Si no ha cambiado ningún archivo de configuración, por favor examinar la conf/tomcat-users.xml
archivo en su instalación (locate tomcat-users.xml
). Ese archivo debe contener las credenciales que le permite utilizar Tomcat aplicación web.
Por ejemplo, para agregar la función de gestor de interfaz gráfica de usuario a un usuario llamado tomcat
con una contraseña de s3cret
, añada lo siguiente al archivo de configuración que aparece arriba:
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
A continuación, puede acceder a su gestor de aplicaciones web de /manager/html
(por ejemplo, volver a cargar después de los cambios de configuración).
Leer más: App Manager HOW-TO <. / p>
A continuación, reiniciar el Tomcat y para acceder a su aplicación web, debe pedir las credenciales correctas.
Vea también:
- autenticación básica HTTP en Java en Oracle sitio
- Especificación de un mecanismo de autenticación en Java en Oracle sitio
- Configuración de Dominio HOW-TO en Apache Tomcat sitio
- Configuración seguridad basada en papel en Tomcat
- ¿Cómo uso la autenticación básica con Tomcat?