Pregunta

Me está costando entender JAAS. Todo parece más complicado de lo que debería ser (especialmente los tutoriales de Sun). Necesito un tutorial simple o un 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.

Otros consejos

Otros usuarios han proporcionado algunos enlaces muy útiles arriba, así que no voy a molestarme con los enlaces. He realizado una investigación similar en JAAS para aplicaciones web y me he encontrado con un "obstáculo mental". hasta que finalmente me doy cuenta de que JAAS es un marco que aborda la seguridad en una '' capa '' diferente luego aplicaciones web en el mundo Java. Está construido para abordar problemas de seguridad en Java SE, no Java EE.

JAAS es un marco de seguridad creado para asegurar cosas en 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 se reutilizaron 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 la seguridad de Spring (anteriormente conocida como Acegi), que similar a la seguridad nativa de Java EE aborda una capa mucho más alta. en el problema de seguridad 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 la seguridad de Java EE que resuelven muchos problemas comunes de seguridad de aplicaciones web.

javax.security es una API 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 Autenticación & amp; Gerentes de autorización.

Para empezar, es bueno imprimir esto en tu memoria.

En segundo lugar, en mi humilde opinión el más simple, configuración y amp; La biblioteca go 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 aplicaciones web y 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 con seguridad.

El problema con la seguridad es que, por lo general, debe personalizarlo según sus necesidades, por lo que puede terminar implementando:

Módulo de inicio de sesión : verifica el 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, por ejemplo, solicitando un nombre de usuario y contraseña a través de una interfaz gráfica de usuario. Entonces, dentro del controlador, obtiene el nombre de usuario y la contraseña del usuario y se pasa al módulo de inicio de sesión.

LoginContext : simplemente llame a lc.login (); y autenticar las credenciales. LoginContext se rellena con el Asunto autenticado.

Sin embargo, Jboss picketbox te ofrece un camino realmente fácil, a menos que necesites algo específico.

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

Además de 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 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 la empresa , que es un artículo antiguo pero proporciona una gran cantidad de antecedentes históricos sobre por qué los modelos Java SE (JAAS) y Java EE divergieron de la manera en que lo hicieron.

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

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

Para un tutorial puramente JAAS, consulte esto . Es antiguo pero debería ayudar con los conceptos básicos de JAAS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top