Apache Shiro – Lista de usuarios en la base de datos de Oracle

agosto 26, 2011

Apache Shiro es un framework que nos permite configurar e implementar la autenticación, autorización, manejo de sesiones y criptografía en nuestras aplicaciones.
Para configurar Oracle como el almacen de usuarios, necesitas descargar el archivo ojdbc6.jar y agregarlo a la carpeta WEB-INF/lib o agregar una dependencia con Maven. Luego, agrega las siguientes líneas en el archivo de configuración shiro.ini

 [main]
 jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
# El valor por defecto de JdbcRealm es false
jdbcRealm.permissionsLookupEnabled=true
# El valor por defecto de JdbcRealm es "select password from users where username = ?"
 jdbcRealm.authenticationQuery = SELECT PASSWORD FROM TUSUARIOS WHERE SUSUARIO = ?
 # El valor por defecto de JdbcRealm es "select role_name from user_roles where username = ?"
 jdbcRealm.userRolesQuery = SELECT ROL FROM TROLES_USUARIO WHERE SUSUARIO = ?
# El valor por defecto de JdbcRealm es "select permission from roles_permissions where role_name = ?"
jdbcRealm.permissionsQuery= SELECT SPERMISO FROM TPERMISOS_ROL WHERE SROL = ?

ds = oracle.jdbc.pool.OracleDataSource
 ds.driverType = thin
 ds.serverName = 192.168.0.1
 ds.portNumber = 1521
 ds.databaseName = dbtest
 ds.user = scott
 ds.password = tiger
 jdbcRealm.dataSource = $ds

sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
 jdbcRealm.credentialsMatcher = $sha256Matcher
 

Es muy importante que establezcas la propiedad ‘permissionsLookupEnabled’ en true, de lo contrario no se cargarán los permisos del usuario y todas las llamadas al método Subject.isPermitted() regresaran false.

El último par de líneas nos permite almacenar el hash de las contraseñas utilizando el algoritmo sha256, para que nadie pueda verlas. La columna que almacena este valor la puse como varchar2(64) ya que siempre se genera una cadena de 64 caracteres. Puedes generar el hash desde la línea de comandos -en linux- ejecutando:

echo -n mi_password_secreto | sha256sum

o en la página http://www.xorbin.com/tools/sha256-hash-calculator

Fuentes:
http://shiro.apache.org/
http://raibledesigns.com/
http://www.java2s.com/
http://stackoverflow.com/

Anuncios

Una respuesta to “Apache Shiro – Lista de usuarios en la base de datos de Oracle”


  1. […] tu lista de usuarios, roles y sus permisos en una base de datos de Oracle, puedes configurarlo de ésta forma. Pero ¿cómo hacemos para asignar permisos individuales a un usuario? Con el JDBCRealm […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: