Está en la página 1de 5

Configuración Realm JDBCRealm

 En este tipo de configuración la información de los usuarios y contraseñas es obtenida apartir de


una base de datos relacional vía JDBC, en vez del archivo conf/tomcat-users.xml.
 La configuración se realiza en el archivo META-INF/context.xml de la aplicación web.
 Al especificar la configuración de JDBCRealm en el archivo META-INF/context.xml,
automáticamente se omitirá otro tipo de autenticación, por ejemplo UserDatabaseRealm.
 Esta configuración es ideal para aplicaciones con muchos usuarios.
 Dado que el acceso a los usuarios es por medio de JDBC, puede ser usada cualquier base de
datos que conecte vía JDBC.
 Las tablas de usuarios y contraseñas pueden ser administradas desde la misma aplicación. Por
ejemplo un formulario para el CRUD. Tambien se pueden dar de alta los usuarios manualmente
(sentencia INSERT).

NOTA MUY IMPORTANTE: No olvidar colocar el driver JDBC (mysql-connector-java-5.1.40-bin.jar) para


la base de datos en el directorio apache-tomcat/lib, ya que no basta con que el driver ya lo incluya la
aplicación web en el directorio myApp/WEB-INF/lib.

1
Configuración Realm JDBCRealm
Diseño de la base de datos requerida.

Campos requeridos Campos opcionales


Tabla Usuario Tabla Usuario
• username • id
• password • nombre
Tabla UsuarioPerfil Tabla UsuarioPerfil
• username • id
• perfil • idUsuario
2
Configuración Realm JDBCRealm
Archivo META-INF/context.xml
CONFIGURACIÓN PARA VERSIONES DE APACHE TOMCAT (7.0.X, 8.0.X, etc.)
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp">
<Realm className="org.apache.catalina.realm.JDBCRealm"
connectionName="root" connectionPassword="admin"
connectionURL="jdbc:mysql://localhost:3306/realmdb"
driverName="com.mysql.jdbc.Driver"
digest="MD5"
roleNameCol="perfil"
userCredCol="password"
userNameCol="username"
userRoleTable="UsuarioPerfil"
userTable="Usuario"/>

</Context>

3
Configuración Realm JDBCRealm
Archivo META-INF/context.xml
CONFIGURACIÓN PARA VERSIONES DE APACHE TOMCAT (8.5.x, 9.0.x, etc.)
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myapp">
<Realm className="org.apache.catalina.realm.JDBCRealm"
connectionName="root" connectionPassword="admin"
connectionURL="jdbc:mysql://localhost:3306/realmdb"
driverName="com.mysql.jdbc.Driver"
roleNameCol="perfil"
userCredCol="password"
userNameCol="username"
userRoleTable="UsuarioPerfil"
userTable="Usuario"/>

<CredentialHandler
className="org.apache.catalina.realm.MessageDigestCredentialHandler"
algorithm="MD5" iterations="1" saltLength="0" encoding="ISO-8859-1" />

</Context>
4
Seguridad basada en Contenedores en otro tipo de aplicaciones

La implementación de UserDatabaseRealm y JDBCRealm, se puede aplicar a otro tipo de aplicaciones. Por ejemplo en
proyectos desarrollados con Spring MVC y Apache Struts, debido a que utilizan utilizan JSPs y URLs, se puede aplicar
la misma seguridad, como lo hicimos en este curso. En el caso de Java Server Faces, protegeriamos las páginas XHTML.
Aquí un ejemplo para una aplicación desarrollada con JSF.

<security-constraint>
<display-name>AdminAccess</display-name>
<web-resource-collection>
<web-resource-name>Protected resources</web-resource-name>
<url-pattern>/faces/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>editor</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/faces/login.xhtml</form-login-page>
<form-error-page>/faces/error.xhtml</form-error-page>
</form-login-config>
</login-config>
5

También podría gustarte