Pregunta JAAS para los seres humanos


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 un repositorio de usuario personalizado. Puede ser implementado usando ACEGI.


74
2018-03-09 23:27


origen


Respuestas:


Estos son algunos de los enlaces que utilicé para ayudar a entender JAAS:

http://www.owasp.org/index.php/JAAS_Tomcat_Login_Module

http://www.javaworld.com/jw-09-2002/jw-0913-jaas.html

http://jaasbook.wordpress.com/

http://roneiv.wordpress.com/2008/02/18/jaas-authentication-mechanism-is-it-possible-to-force-j_security_check-to-go-to-a-specific-page/

También eche un vistazo a la configuración de los reinos de Tomcat Apache:

http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html


22
2018-03-09 23:38



Otros usuarios han proporcionado enlaces muy útiles arriba, así que no voy a molestarme con enlaces. Hice una investigación similar en JAAS para la aplicación web y me encontré con un "obstáculo mental" hasta que finalmente me di cuenta de que JAAS es un marco que aborda la seguridad en una "capa" diferente a las aplicaciones web en Java World. Es una compilación para abordar problemas de seguridad en Java SE no Java EE.

JAAS es un marco de seguridad creado para asegurar 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 de JVM, por lo tanto, toda esta capacidad para establecer archivos de políticas en el nivel de JVM.

Sin embargo, como Java EE está construido sobre Java SE, algunos módulos de JAAS se reutilizaron en la seguridad de Java EE, como los 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 de forma similar a la seguridad Java EE nativa aborda una "capa" mucho más alta en el problema de seguridad de la aplicación web. Es una implementación de seguridad independiente 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 recursos seguros 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 utilizar Spring Security o la antigua y simple seguridad Java EE, que resuelven muchos problemas comunes de seguridad de las aplicaciones web.


49
2018-03-29 15:37



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 los administradores de Autenticación y Autorización.

Para empezar, es bueno imprimir esta en tu memoria.

En segundo lugar, en la biblioteca más simple, setup & go para JAAS es Jboss PicketBox. Dice cómo hacer la autenticación y la autorización a través de JBossAuthenticationManager y JBossAuthorizationManager ... Fácilmente configurable a través de XML o Anotaciones. Puede usarlo para administrar aplicaciones webapps 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 certeza.

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

LoginModule - verifica el nombre de usuario + contraseña

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

CallbackHandler se transfiere a los LoginModules subyacentes para que puedan comunicarse e interactuar con los usuarios, por ejemplo, solicitando un nombre de usuario y una contraseña a través de una interfaz gráfica de usuario. Por lo tanto, dentro del controlador obtiene el nombre de usuario y la contraseña del usuario y se pasa al LoginModule.

LoginContext - Entonces solo llamas a lc.login (); y autenticar las credenciales. LoginContext se rellena con el Asunto autenticado.

Sin embargo, JBoss picketbox le brinda una manera realmente fácil de hacerlo, a menos que necesite algo específico.


11
2018-06-21 09:49



La respuesta de lsiu es una de las pocas respuestas que realmente "lo entiende";)

Agregando 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 a un proveedor de nombres de usuario y roles relativamente simple en Java EE.

Del mismo autor es JAAS en la empresa, 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, algunos tipos de JAAS se usan directamente en Java EE, básicamente Principal , Subjecty CallbackHandler. Los dos últimos son utilizados principalmente por JASPIC. He explicado JASPIC en el artículo Implementación de autenticación de contenedor en Java EE con JASPIC.


8
2018-05-03 22:11



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


2
2018-03-09 23:58



Para un tutorial puramente JAAS echa un vistazo esta. Es viejo pero debería ayudar con los principios básicos de JAAS.


1
2018-03-09 23:31