Autenticación por DNI electrónico

cancel
Showing results for 
Search instead for 
Did you mean: 
ajv
Member II

Autenticación por DNI electrónico

Hola a todos!

Llevo unos días metido en permitir la autenticación a usuarios de Alfresco por DNI electrónico, ya que creo que a estas alturas debería ser algo extendido por todas las administraciones/empresas que usan Alfresco. De hecho, si lo consigo/conseguimos sacaré un hueco para dejarlo como una mini-guía o similar de forma que cualquier pueda tunear su Alfresco para permitir este tipo de acceso.


El tema es que tengo un java web script que es capaz de leer el certificado del DNIe (tras solicitar el PIN). El webscript es capaz de determinar si se trata de un DNIe, verifica que el certificado es válido a día de hoy mediante OCSP y, si existe un usuario con ese DNI como username en Alfresco, realiza la autenticación.

Ahora bien, se me está "atragantando" el tema de decirle a Alfresco: "A partir de ahora, redirige a la página principal de Share autenticado como XXXX" (donde XXXX representa al userName del DNIe y, lógicamente, sin proporcionar el password ya que con haber validado el certificado de autenticación del DNIe debería ser suficiente).
He hecho pruebas utilizando un authenticationComponent personalizado que acepta todas las peticiones (saqué la idea del org.alfresco.repo.security.authentication.SimpleAcceptOrRejectAllAuthenticationComponentImpl), también inyectando el authenticationService de Alfresco y con el AuthenticationUtil.setFullyAuthenticatedUser(userName), pero nada de nada. La cuestión es que consta como autenticado ese usuario en el controlador del java web script, pero se pierden las credenciales en cuanto finaliza el webscript. Ni redirige a la página principal de Share ni mantiene las credenciales…

¿Alguien tiene alguna idea de cómo abordar esto sin necesidad de recurrir a un servicio CAS (y sin comprometer la seguridad del sistema jeje)??
Venga, saludos y feliz verano!
4 Replies
cesarista
Customer

Re: Autenticación por DNI electrónico

Hola ajv:

Yo hice las pruebas hace tiempo con CAS y el handler de autenticación de tarjetas criptográficas para Alfresco Explorer. Lo bueno que tiene es que no tienes que cambiar ningún modulo de Alfresco, solo algo de configuración en el servidor CAS pero no vas a poder usar CIFS por ejemplo. Por cierto, tampoco esta muy claro el CAS para Alfresco Share 3.4 aunque hay algunos parches en algunos blogs.

Entiendo que deberías crearte un subsistema de autenticación tipo external, que mediante un filtro te redireccione a una página de login, donde te autentiques con el DNI electronico, y que el proceso de login cree un ticket que se valide en el servidor de Alfresco permitiendo entrar en Share. Muy parecido en concepto a lo que hace CAS, pero mas personalizado porque así podrás controlar un subconjunto de usuarios que pueden loguearse en el servidor.

Por otro lado, no termino de entender lo que comentas y como lo haces con un webscript. Creo, y remarco lo de creo, que si tu te logueas via webscript, por ejemplo con el webscript de login y recoges el ticket que te da alfresco, no vas a estar autenticado en el cliente ya sea share o explorer. Se que vas a poder utilizarlo en otro webscript pero no se si se lo vas a poder inyectar a los clientes web directamente. Creo que son canales diferentes.

http://wiki.alfresco.com/current/images/thumb/0/00/ServerAuthArch.gif/1008px-ServerAuthArch.gif

No se si aclaro mucho, pero hasta ahí puedo aportar.

Un saludo.

–C.
ajv
Member II

Re: Autenticación por DNI electrónico

Hola Cesar!

Gracias por tus aportaciones al tema.
La verdad es que no he avanzado mucho en estos días (y no será por todo el tiempo que le estoy dedicando, jeje).
Mi idea inicial era permitir a los usuarios el login tanto por user/pass como por DNI electrónico desde Share. Para ello, tengo configurado el servidor con un conector que habilita la autenticación cliente por certificados.
El java webscript recoge el certificado y realiza la lógica de validación del DNI y de la obtención del username de Alfresco, hasta el punto de generar un alf_ticket de éste…pero más allá de eso, no ha habido forma.

Lo peor de todo es que, después de mucho leer, parece que tus sospechas sobre los tickets de Alfresco se confirman: Únicamente van bien para hacer llamadas a otros webscripts (desde nuestra lógica, es decir, programáticamente), pero no para propagarse y que sirva como autorización para el usuario (es decir, parece ser que no hay posibilidad de "inyectar" ese ticket al Share)…o por lo menos, yo no he encontrado forma  :cry:

Empezaré a mirar el tema del subsistema de autenticación "external", espero no tener que llegar a configurar un CAS para esto…
Bueno, si a alguien se le ocurre algo diferente o quiere colaborar, soy todo oídos!

Saludos!
cesarista
Customer

Re: Autenticación por DNI electrónico

Hola ajv:

Te paso un enlace que aunque no es propiamente de alfresco (es de liferay) te da algo de información (conceptualmente) de las dos orientaciones que manejas.

http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/autenticacion-en-liferay-portal-via-smart-card-ti...

Un saludo.

–C.
ajv
Member II

Re: Autenticación por DNI electrónico

Muchas gracias por responder!
Ya le había echado un ojo a vuestro blog  :wink: y es cierto que aclara conceptualmente lo que se debe hacer…el problema es implementar el hook con Alfresco, que apenas he encontrado documentación.

Lo último que voy a intentar es reimplementar el controlador de login de share,  a ver si así Share se "entera" del intento de login por certificados…
He encontrado alguna referencia sobre el tema:
http://forums.alfresco.com/en/viewtopic.php?f=48&t=38671
http://forums.alfresco.com/en/viewtopic.php?f=48&t=35528

A ver si este finde me pongo y os cuento!
Un saludo,
Adrián.