Existen tres formas de configurar el plugin de Spring Security: Annotation, RequestMap y IntercepUrlMap, en tutoriales anteriores describí la forma de hacerlo mediante RequestMap y en esta ocasión veremos como configurarlo mediante Anotaciones, además de que usaremos la versión 2.0 que nos proporciona un script que nos ayudará a crear nuestra configuración de manera rápida y casi automática, asumimos que tenemos un proyecto Grails recién creado, las versiones que utilice al momento de este tutorial son: Grails 2.4.4 y Java 1.7.
Instalando el plugin de Spring Security
La manera más simple de instalar un plugin es mediante el comando: install-plugin “nombre plugin” en esta ocación también lo haremos manual y para ello nos vamos al archivo “grails-app/conf/BuildConfig” buscamos la sección de plugins y ponemos lo siguiente:
plugins { … compile ':spring-security-core:2.0-RC4' … }
* Esta es la manera más recomendable de instalar cualquier plugin o dependencia.
Configurando el plugin de Spring Security
Spring proporciona las configuraciones por default en el archivo: “DefaultSecurityConfig.groovy” todas ellas traen valores por default y se pueden sobreescribir directamente desde el archivo: “Config.groovy” por ahora no necesitamos mover nada para empezar.
Dominios requeridos
Spring requeire ciertas clases de dominio, y es aquí donde vamos a utilizar el script que mencionaba al inicio, para crear estas clases basta con ejecutar:
grails s2-quickstart “paquete” “nombreDominios”
por ejemplo:
grails s2-quickstart com.testapp.seguridad User Role
Con la instruccion anterior el script creará automáticamente tres clases de dominio: User, Rol y UserRole las cuales podemos modificar para adaptar a nuestras necesidades, para el ejemplo las dejaremos tal cual se generaron. También se realizan modificaciones en el archivo: “Config.groovy” agregando las siguientes líneas:
// Added by the Spring Security Core plugin: grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.testapp.seguridad.User' grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.testapp.seguridad.UserRole' grails.plugin.springsecurity.authority.className = 'com.testapp.seguridad.Role' grails.plugin.springsecurity.controllerAnnotations.staticRules = [ '/': ['permitAll'], '/index': ['permitAll'], '/index.gsp': ['permitAll'], '/assets/**': ['permitAll'], '/**/js/**': ['permitAll'], '/**/css/**': ['permitAll'], '/**/images/**': ['permitAll'], '/**/favicon.ico': ['permitAll'] ]
Nos podemos dar cuenta que únicamente se le indica a Spring la ubicación de nuestras clases requeridas y una configuración sencilla sobre los accesos a paginas default de nuestra aplicación.
Agregando datos de ejemplo
Por ahora vamos a poner datos de ejemplo en “BootStrap.groovy” en el cual agregaremos lo siguiente dentro de init:
def init = { servletContext -> def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true) def userRole = new Role(authority: 'ROLE_USER').save(flush: true) def testUser = new User(username: 'me', password: 'password') testUser.save(flush: true) UserRole.create testUser, adminRole, true assert User.count() == 1 assert Role.count() == 2 assert UserRole.count() == 1 }
Simplemente estamos definiendo dos roles y un usuario, así como la relación entre el usuario y el rol administrador
Probando la configuración
Para realizar esta prueba necesitaremos crear un controlador en el cual agregaremos dos métodos por ejemplo:
def sinSeguridad(){ println "entrando a sin seguridad..." } @Secured(['ROLE_ADMIN']) def conSeguridad(){ println "entrando a la administración de usuarios.." }
Nótese que uno de los métodos esta anotado con “@Secured” que no es más que la anotación de Spring que nos permite realizar la configuración sobre que rol o roles tendrán acceso a ese método.
Después creamos sus respectivas páginas y lanzamos la aplicación, una vez que esté en funcionamiento tratamos de entrar a la página: “conSeguridad” desde la url correspondiente y notaremos que Spring nos envía automáticamente una pantalla simple de Login, sin poner datos cambiamos la url apuntando a la página “sinSeguridad” y podremos ver su contenido sin problemas, nuevamente regresamos a la url “conSeguridad” y ahora en la pantalla de Login pondremos los datos del usuario que previamente dimos de alta en el boostrap (me,password) y presionar el botón Login si las credenciales son correctas ya nos permitirá ver el contenido.
No hay comentarios:
Publicar un comentario