2011-06-27 16 views
5

Estoy tratando de averiguar cómo funcionan los indicadores del módulo de inicio de sesión en JAAS (usando JBoss 5.1 EAP) y he encontrado una situación desconcertante que espero que alguien pueda aclarar para mí.JAAS Indicadores LoginModule

Para el fondo, mi login-config.xml se parece a esto:

<authentication-policy> 
    <authentication> 
    <login-module code="...loginModule1" flag="sufficient"> 
     ... 
    </login-module> 
    <login-module code="...loginModule2" flag="optional"> 
     ... 
    </login-module> 
    <login-module code="...loginModule3" flag="optional"> 
     ... 
    </login-module> 
    </authentication> 
</authentication-policy> 

En este caso, loginModule1 es independiente, pero depende de loginModule2 loginModule3. El problema que tengo es que si loginModule1 falla y loginModule2 y loginModule3 tienen éxito, sigo teniendo un inicio de sesión fallido. Si cambio loginModule1 para que sea opcional, cuando loginModule1 falla y 2 y 3 tienen éxito, obtengo un inicio de sesión exitoso.

A partir de la documentación de seguridad de JBoss (http://docs.jboss.org/jbossas/admindevel326/html/ch8.chapter.html):

sufficient: the LoginModule is not required to succeed. If it does succeed, 
control immediately returns to the application (authentication does not proceed 
down the LoginModule list). If it fails, authentication continues down the 
LoginModule list. 

, habría pensado en base a esto que cuando el El LoginModule con un indicador suficiente falla, pero un siguiente LoginModule pasa, entonces obtendría un inicio de sesión exitoso. ¿Alguien sabe por qué este no es el caso?

+0

Terminé dividiendo los dos casos de uso en dos dominios de seguridad en lugar de utilizar la funcionalidad de conmutación por error. Una pena, sin embargo. – bwobbones

Respuesta

8

Debe consultar la documentación de java en el javax.security.auth.login.Configuration class, tiene toda la información sobre lo que significa suficiente, requerido, requerido y opcional. Lo que es pertinente para su pregunta es este párrafo:

La autenticación general se realiza solo si todos los Módulos de inicio de sesión necesarios y requeridos tienen éxito. Si se configura un LoginModule suficiente y tiene éxito, solo los Módulos de inicio de sesión requeridos y necesarios antes de ese LoginModule suficiente deben haber tenido éxito para que la autenticación general tenga éxito. Si no se configuran los Módulos de inicio de sesión requeridos o requeridos para una aplicación, entonces al menos un Módulo de inicio de sesión suficiente u opcional debe tener éxito.

Esto es lo que debería suceder, por lo que parece que su configuración es correcta, pero algo no está regresando correctamente por lo que todo está fallando. Quizás JBoss hace algo un poco diferente.

+0

gracias por eso, había leído ese comentario, es bueno saber que alguien más piensa que hay un error. – bwobbones

Cuestiones relacionadas