Entorno -> Grails 1.2.2
Para esta aplicación es necesario tener un servidor configurado para que solicite certificados al acceder a un recurso seguro, en esta página se explican los detalles
grails create-app AutentificacionDNIe cd AutentificacionDNIe grails install-plugin spring-security-core grails s2-quickstart org.gruposp2p.openid.provider UserDNI RoleDNI
Se crea el controlador cuyo acceso se quiera securizar con DNI electrónico:
grails create-controller secure
Para solicitar el acceso del DNIe se configura la aplicación para que el acceso al controlador se haga exclusivamente a través del protocolo HTTPS. Para ello se edita ‘Config.groovy’ y se añade:
grails.plugins.springsecurity.useX509=true grails.plugins.springsecurity.x509.subjectDnRegex = 'SERIALNUMBER=(.*?),' grails.plugins.springsecurity.portMapper.httpsPort=8443 grails.plugins.springsecurity.secureChannel.definition = ['/secure/**':'REQUIRES_SECURE_CHANNEL', '/**': 'ANY_CHANNEL']
Para comprobar que todo funciona se edita BootStrap.groovy y se añade un usuario de pruebas
def init = { servletContext ->
def adminRole = new RoleDNI(authority: 'ROLE_ADMIN').save(flush: true)
String password = springSecurityService.encodePassword('password')
def testUser = new UserDNI(username: 'NumeroNIFDelDNIConQueSePrueba', enabled: true, password: password)
testUser.save(flush: true)
UserDNIRoleDNI.create testUser, adminRole, true
}
Crear secure/index.gsp con
<sec:ifLoggedIn> Buenas <sec:loggedInUserInfo field="username"/> </sec:ifLoggedIn> <sec:ifNotLoggedIn> Acceso no autorizado </sec:ifNotLoggedIn>
Para probar la aplicación ejecutar
grails run-app
… y acceder a la aplicación
