JAAS para seres humanos


Estoy teniendo dificultades para entender a JAAS. Todo parece más complicado de lo que debería ser (especialmente los tutoriales de Sun). Necesito un tutorial simple o ejemplo sobre cómo implementar la seguridad (autenticación + autorización) en la aplicación java basada en Struts + Spring + Hibernate con repositorio de usuario personalizado. Se puede implementar usando ACEGI.

Author: matt b, 2009-03-10

6 answers

 22
Author: Martlark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-01 23:43:33

Otros usuarios han proporcionado algunos enlaces muy útiles arriba, así que no voy a molestarme con los enlaces. He hecho una investigación similar en JAAS para aplicaciones web y se ha topado con un "bloqueo mental" hasta que finalmente me doy cuenta de que JAAS es un marco que aborda la seguridad en una "capa" diferente a las aplicaciones web en el mundo Java. Está construido para hacer frente a los problemas de seguridad en Java no Java EE.

JAAS es un marco de seguridad construido para asegurar las cosas a un nivel mucho más bajo que la aplicación web. Algunos ejemplos de estas cosas son el código y los recursos disponibles en el nivel JVM, de ahí toda esta capacidad para establecer archivos de políticas en el nivel JVM.

Sin embargo, dado que Java EE está construido sobre Java SE, algunos módulos de JAAS fueron reutilizados en la seguridad de Java EE, como LoginModules y Callbacks.

Tenga en cuenta que, además de la seguridad de Java EE, también existe Spring security (anteriormente conocida como Acegi), que, al igual que la seguridad nativa de Java EE, aborda una "capa" mucho más alta en la seguridad problema de la aplicación web. Es una implementación de seguridad separada y no está construida sobre la seguridad estándar de Java EE, aunque se comporta de manera similar en muchos aspectos.

Para resumir, a menos que esté buscando asegurar recursos en el nivel Java SE (clases, recursos del sistema), no veo ningún uso real de JAAS que no sea el uso de la clase común y las interfaces. Solo concéntrese en usar Spring Security o Java EE security, que ambos resuelven una gran cantidad de seguridad de aplicaciones web comunes problema.

 49
Author: lsiu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-01 22:49:52

Javax.la seguridad es una API de imho demasiado complicada. Como resultado, hay implementadores no solo de LoginModules, sino de toda la api de autenticación y autorización, que crea la capa de abstracción anterior, como los administradores de autenticación y autorización.

Para empezar, es bueno imprimir esto en tu memoria.

En segundo lugar, en mi humilde opinión, la librería setup & go más simple para JAAS es Jboss PicketBox. Dice cómo hacer autenticación y autorización a través de JBossAuthenticationManager y JBossAuthorizationManager ... Fácilmente configurable a través de XML o Anotaciones. Puede usarlo para administrar tanto aplicaciones web como aplicaciones independientes.

Si necesita la parte de autorización para administrar el acceso al repositorio, en términos de ACL para recursos, esto es lo que está buscando seguro.

El problema con la seguridad es, que por lo general necesita personalizarlo a sus necesidades, por lo que puede terminar implementando:

LoginModule - verifica Nombre de usuario + Contraseña

CallbackHandler se usa así new LoginContext("Sample", new MyCallbackHandler());

CallbackHandler se pasa a los LoginModules subyacentes para que puedan comunicarse e interactuar con los usuarios, solicitando un nombre de usuario y contraseña a través de una interfaz gráfica de usuario, por ejemplo. Así que dentro del Controlador obtienes el nombre de usuario y la contraseña de user y se pasa al LoginModule.

LoginContext - entonces solo tienes que llamar a lc.login(); y autenticar las credenciales. LoginContext se rellena con el asunto autenticado.

Sin embargo, Jboss picketbox le da una manera muy fácil de ir, a menos que necesite algo específico.

 11
Author: lisak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-19 10:09:01

La respuesta de Lsiu es una de las pocas respuestas aquí que realmente "lo entienden";)

Añadiendo a esa respuesta, una muy buena referencia sobre este tema es ¿Qué pasó con JAAS?.

Explica cómo JASPIC es el enlace en Java EE entre los modelos de seguridad Servlet y EJB y potencialmente un módulo de inicio de sesión de JAAS, pero que en muchos casos el rol de JAAS se reduce al de un nombre de usuario y proveedor de roles relativamente simple en Java EE.

Del mismo autor es JAAS en el Enterprise, que es un artículo anterior, pero proporciona una gran cantidad de antecedentes históricos sobre por qué los modelos Java SE (JAAS) y Java EE divergieron de la forma en que lo hicieron.

En general, pero algunos tipos de JAAS se utilizan directamente en Java EE, básicamente Principal , Subject, y CallbackHandler. Los dos últimos son utilizados principalmente por JASPIC. He explicado JASPIC en el artículo Implementando la autenticación de contenedores en Java EE con JASPIC.

 8
Author: Arjan Tijms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-03 22:11:13

No puedo hablar demasiado con JAAS, pero esta guía de"pasos sugeridos" sobre Spring Security y el manual de referencia son recursos bastante buenos sobre Spring Security - si su configuración es casi simple, realmente no necesita hacer mucho más que leerlos.

 2
Author: matt b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-13 16:53:35

Para un tutorial puramente JAAS echa un vistazo este. Es viejo, pero debería ayudar con lo básico de JAAS.

 1
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-09 23:31:00