Error con JAAS
Hola, tengo un problema cuando trato de ingresar a mi aplicación usando
DatabaseServerLoginModule y el error es el siguiente:
HTTP Status 400 - Invalid direct reference to form login page
type Status report
message Invalid direct reference to form login page
description The request sent by the client was syntactically incorrect
(Invalid direct reference to form login page).
La verificación de la cuenta de usuario lo está haciendo bien ya que
cuando ingreso con una cuenta de usuario que no existe me redirecciona a
la página de error definida en el web.xml, pero cuando ingreso con una
cuenta de usuario que si es válida me arroja el error anterior. No se
dónde se define la página a la que se redirecciona una vez el usuario
sea válido para ingresar a la aplicación. ?????? o si en el Servlet es
necesario crear algún método ????
Aquà están los archivos que uso por si ayudan de algo:
login-config.xml:
<application-policy name = "dominioSeguridad">
<authentication>
<login-module code = "org.jboss.security.ClientLoginModule" flag =
"required">
</login-module>
<login-module code =
"org.jboss.security.auth.spi.DatabaseServerLoginModule" flag = "required">
<module-option
name="dsJndiName">java:jdbc/ConexionMySql</module-option>
<module-option name="principalsQuery">select constrasena from
cuenta where usuario=?</module-option>
<module-option name="rolesQuery">select nombre, grupo from role
where usuario=?</module-option>
</login-module>
</authentication>
</application-policy>
jboss-web.xml:
<jboss-web>
<security-domain>java:jaas/dominioSeguridad</security-domain>
<context-root>/PruebaSeguridad</context-root>
</jboss-web>
web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>NombreWebResource</web-resource-name>
<url-pattern>/registrar.jsp</url-pattern>
<url-pattern>/ingresar.jsp</url-pattern>
<url-pattern>/index.jsp</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>CO</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Role</description>
<role-name>CO</role-name>
</security-role>
jboss.xml:
<container-configuration>
<container-name>Standard Stateless SessionBean</container-name>
<security-domain>java:jaas/dominioSeguridad</security-domain>
</container-configuration>
ejb-jar.xml:
<assembly-descriptor>
<security-role>
<description>Descripcion</description>
<role-name>CO</role-name>
</security-role>
<method-permission>
<role-name>CO</role-name>
<method>
<ejb-name>EJBSession</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
</method-permission>
</assembly-descriptor>
Gracias.
DatabaseServerLoginModule y el error es el siguiente:
HTTP Status 400 - Invalid direct reference to form login page
type Status report
message Invalid direct reference to form login page
description The request sent by the client was syntactically incorrect
(Invalid direct reference to form login page).
La verificación de la cuenta de usuario lo está haciendo bien ya que
cuando ingreso con una cuenta de usuario que no existe me redirecciona a
la página de error definida en el web.xml, pero cuando ingreso con una
cuenta de usuario que si es válida me arroja el error anterior. No se
dónde se define la página a la que se redirecciona una vez el usuario
sea válido para ingresar a la aplicación. ?????? o si en el Servlet es
necesario crear algún método ????
Aquà están los archivos que uso por si ayudan de algo:
login-config.xml:
<application-policy name = "dominioSeguridad">
<authentication>
<login-module code = "org.jboss.security.ClientLoginModule" flag =
"required">
</login-module>
<login-module code =
"org.jboss.security.auth.spi.DatabaseServerLoginModule" flag = "required">
<module-option
name="dsJndiName">java:jdbc/ConexionMySql</module-option>
<module-option name="principalsQuery">select constrasena from
cuenta where usuario=?</module-option>
<module-option name="rolesQuery">select nombre, grupo from role
where usuario=?</module-option>
</login-module>
</authentication>
</application-policy>
jboss-web.xml:
<jboss-web>
<security-domain>java:jaas/dominioSeguridad</security-domain>
<context-root>/PruebaSeguridad</context-root>
</jboss-web>
web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>NombreWebResource</web-resource-name>
<url-pattern>/registrar.jsp</url-pattern>
<url-pattern>/ingresar.jsp</url-pattern>
<url-pattern>/index.jsp</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>CO</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Role</description>
<role-name>CO</role-name>
</security-role>
jboss.xml:
<container-configuration>
<container-name>Standard Stateless SessionBean</container-name>
<security-domain>java:jaas/dominioSeguridad</security-domain>
</container-configuration>
ejb-jar.xml:
<assembly-descriptor>
<security-role>
<description>Descripcion</description>
<role-name>CO</role-name>
</security-role>
<method-permission>
<role-name>CO</role-name>
<method>
<ejb-name>EJBSession</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
</method-permission>
</assembly-descriptor>
Gracias.