La gestión de usuarios es una de las tareas fundamentales en la administración de Apache Tomcat. Permite controlar quién puede acceder a las aplicaciones web, quién puede administrar el servidor y qué permisos posee cada usuario dentro de la plataforma.
Apache Tomcat incorpora un sistema de autenticación basado en usuarios y roles que puede almacenarse localmente en archivos XML, integrarse con bases de datos o conectarse a servicios externos como LDAP o Active Directory.
Precodiciones
La instalación de Apache Tomcat:
- https://codigoelectronica.com/blog/instalar-apache-tomcat-en-windows
- https://codigoelectronica.com/blog/instalar-apache-tomcat-en-linux
Puedes ver como están los archivos en https://codigoelectronica.com/blog/carpetas-y-archivos-de-apache-tomcat
Conceptos Básicos
Antes de crear usuarios es importante conocer algunos conceptos fundamentales.
Usuario
Un usuario representa una identidad dentro del servidor. Cada usuario posee un nombre de acceso y una contraseña.
Ubicación en: /tomcat/conf/tomcat-users.xml
Ejemplos:
| Usuario | Función | Roles recomendados |
|---|---|---|
| developer | Desarrollador que despliega aplicaciones | manager-script, manager-status |
| monitor | Usuario de monitoreo | manager-status |
| manager | Administrador completo de Tomcat | manager-gui, manager-script, manager-jmx, manager-status |
Rol
Un rol es un conjunto de permisos que puede asignarse a uno o varios usuarios. En lugar de asignar permisos individuales a cada usuario, Tomcat utiliza roles para simplificar la administración.
manager-gui
El rol manager-gui permite acceder a la interfaz gráfica web del Manager.
URL: http://localhost:8080/manager/html
Funcionalidades
- Ver aplicaciones desplegadas.
- Desplegar archivos WAR.
- Iniciar aplicaciones.
- Detener aplicaciones.
- Recargar aplicaciones.
- Eliminar aplicaciones.
- Consultar sesiones activas.
manager-script
El rol manager-script permite utilizar la interfaz de texto del Manager para automatización.
URL: http://localhost:8080/manager/text
Funcionalidades
- Desplegar aplicaciones mediante scripts.
- Consultar aplicaciones desplegadas.
- Iniciar y detener aplicaciones.
- Automatizar despliegues CI/CD.
manager-jmx
El rol manager-jmx proporciona acceso a los MBeans JMX expuestos por Tomcat.
URL: http://localhost:8080/manager/jmxproxy
Funcionalidades
- Consultar atributos JMX.
- Ejecutar operaciones JMX.
- Obtener métricas internas.
Información disponible
- Uso de memoria JVM.
- Hilos activos.
- Pool de conexiones.
- Sesiones HTTP.
- Conectores HTTP.
- Configuración de aplicaciones.
manager-status
El rol manager-status permite visualizar información de estado del servidor.
URL: http://localhost:8080/manager/status
Funcionalidades: Solo lectura.
Permite consultar:
- Memoria JVM.
- Uso de CPU.
- Número de hilos.
- Aplicaciones desplegadas.
- Sesiones activas.
- Estado de conectores HTTP.
admin-gui
El rol admin-gui pertenece a la aplicación Host Manager.
URL: http://localhost:8080/host-manager/html
Funcionalidades: Administración de Virtual Hosts.
Permite:
- Crear hosts virtuales.
- Eliminar hosts virtuales.
- Modificar configuraciones de hosts.
- Gestionar alias DNS.
admin-script
El rol admin-script permite administrar Virtual Hosts mediante scripts y automatización.
URL: http://localhost:8080/host-manager/text
Funcionalidades
- Crear hosts virtuales.
- Eliminar hosts.
- Listar hosts.
- Automatizar configuraciones.
Realm
Un Realm es el componente encargado de validar usuarios y contraseñas. Cuando un usuario intenta autenticarse, Tomcat consulta el Realm configurado para verificar las credenciales.
Algunos tipos de Realm son:
- MemoryRealm
- UserDatabaseRealm
- JDBCRealm
- DataSourceRealm
- JNDIRealm
Resumen de roles
| Rol | Aplicación | Lectura | Modificación | Automatización |
|---|---|---|---|---|
| manager-status | Manager | ✅ | ❌ | ❌ |
| manager-gui | Manager | ✅ | ✅ | ❌ |
| manager-script | Manager | ✅ | ✅ | ✅ |
| manager-jmx | Manager | ✅ | Parcial | ✅ |
| admin-gui | Host Manager | ✅ | ✅ | ❌ |
| admin-script | Host Manager | ✅ | ✅ | ✅ |
Distribución recomendada de permisos
| Tipo de usuario | Roles |
|---|---|
| Monitor | manager-status |
| Desarrollador | manager-script, manager-status |
| Administrador de aplicaciones | manager-gui, manager-script, manager-status |
| Administrador de infraestructura | admin-gui, admin-script |
| Superadministrador | manager-gui, manager-script, manager-jmx, manager-status, admin-gui, admin-script |
Archivo tomcat-users.xml
La forma más sencilla de administrar usuarios en Tomcat es mediante el archivo tomcat-users.xml.
Este archivo se encuentra normalmente en:
TOMCAT_HOME/conf/tomcat-users.xml
El archivo contiene la definición de usuarios y roles utilizados por Tomcat.
Estructura Básica
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user
username="admin"
password="MiPassword123"
roles="manager-gui,admin-gui"/>
</tomcat-users>
En este ejemplo:
- Se crean dos roles.
- Se crea un usuario llamado admin.
- El usuario recibe ambos roles.
Crear un Usuario Administrador
Un escenario común consiste en crear un usuario con acceso completo a Tomcat Manager y Host Manager.
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user
username="administrador"
password="PasswordSegura2026"
roles="manager-gui,admin-gui"/>
</tomcat-users>
Después de guardar los cambios es necesario reiniciar Tomcat.
sudo systemctl restart tomcat
Acceso al Tomcat Manager
Una vez creado el usuario, se puede acceder a la aplicación Manager mediante:
http://IP_SERVIDOR:8080/manager/html
Tomcat solicitará usuario y contraseña.
Si las credenciales son válidas y el usuario posee el rol adecuado, se mostrará la consola administrativa.
Acceso al Host Manager
La consola Host Manager se encuentra normalmente en:
http://IP_SERVIDOR:8080/host-manager/html
Esta herramienta permite administrar hosts virtuales desde una interfaz web.
Usuarios con Múltiples Roles
Un usuario puede tener varios roles simultáneamente.
<user
username="devops"
password="ClaveSegura"
roles="manager-gui,manager-status,manager-jmx"/>
Esto permite combinar permisos según las necesidades de cada usuario.
Buenas Prácticas de Seguridad
No Utilizar Credenciales por Defecto
Evite utilizar nombres de usuario predecibles como:
- admin
- administrator
- root
- tomcat
Estos nombres suelen ser objetivo de ataques automatizados.
Utilizar Contraseñas Seguras
Una contraseña segura debe contener:
- Letras mayúsculas.
- Letras minúsculas.
- Números.
- Caracteres especiales.
- Más de 12 caracteres.
Aplicar el Principio de Mínimos Privilegios
Asigne únicamente los permisos necesarios para cada usuario.
Por ejemplo, un operador que solo necesita consultar el estado del servidor debería utilizar únicamente:
roles="manager-status"
Restringir Acceso por IP
Tomcat permite limitar el acceso a las aplicaciones administrativas mediante filtros de direcciones IP.
Esto reduce significativamente la superficie de ataque.
Autenticación Mediante Base de Datos
En entornos empresariales es común almacenar usuarios en una base de datos.
Tomcat puede utilizar:
- MySQL
- PostgreSQL
- Oracle
- SQL Server
Esto permite centralizar la gestión de usuarios y facilitar auditorías.
Ejemplo de DataSourceRealm
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/AppDB"
userTable="usuarios"
userNameCol="username"
userCredCol="password"
userRoleTable="roles"
roleNameCol="rol"/>
Integración con LDAP y Active Directory
En organizaciones grandes es habitual integrar Tomcat con servidores LDAP o Active Directory.
Esto permite que los usuarios utilicen las mismas credenciales corporativas para acceder a las aplicaciones.
Las ventajas son:
- Administración centralizada.
- Políticas de seguridad unificadas.
- Menor mantenimiento.
- Control central de contraseñas.
Verificar la Configuración
Después de crear usuarios es recomendable comprobar:
- Que el archivo XML no tenga errores de sintaxis.
- Que el usuario tenga los roles correctos.
- Que Tomcat haya sido reiniciado.
- Que los puertos estén accesibles.
- Que los logs no contengan errores de autenticación.
Los registros suelen encontrarse en:
TOMCAT_HOME/logs/
Errores Comunes
Error 401 Unauthorized
Generalmente ocurre cuando:
- El usuario no existe.
- La contraseña es incorrecta.
- El rol no fue asignado correctamente.
Error 403 Forbidden
Normalmente aparece cuando:
- La IP no está autorizada.
- El usuario no posee el rol requerido.
Manager No Disponible
Puede deberse a:
- Aplicación Manager no desplegada.
- Instalación incompleta.
- Configuración incorrecta del contexto.
Conclusión
La gestión de usuarios en Apache Tomcat se basa en una arquitectura simple y potente formada por usuarios, roles y Realms. Para entornos de laboratorio o aprendizaje, el archivo tomcat-users.xml es suficiente. Sin embargo, en entornos corporativos es recomendable utilizar bases de datos, LDAP o Active Directory para centralizar la autenticación.
Dominar la administración de usuarios es un paso fundamental para gestionar correctamente Tomcat, desplegar aplicaciones de forma segura y controlar el acceso a las herramientas administrativas del servidor.