[RESOLVIDO] HTTP Status 400 - Invalid direct reference to form login page utilizando JAAS

Ta difícil essa implementação com JAAS…acredito que a autenticação esta correta pois quando coloco os dados incorretos, sou encaminhado para a página de erro, mas quando os dados estão corretos, encontro esse erro e simplesmente não aparece nada no log do jboss.

Utilizo JBOSS 5.

Alguém saberia o que esta acontecendo?

web.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

CertificadoDigital-web

State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2 javax.faces.STATE_SAVING_METHOD client javax.faces.PARTIAL_STATE_SAVING true index.html -1 Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.xhtml *.jsp primefaces.THEME cruze
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Users</web-resource-name>
        <url-pattern>/pages/private/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>USER</role-name>
    </auth-constraint>
</security-constraint> 
<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>        
        <form-login-page>/pages/public/login.xhtml</form-login-page>
        <form-error-page>/pages/public/loginError.xhtml</form-error-page>
    </form-login-config>
</login-config> 
<security-role>
    <role-name>USER</role-name>
</security-role>    

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>br.com.certificado.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/pages/private/*</url-pattern>
</filter-mapping>   

<filter>  
    <filter-name>PrimeFaces FileUpload Filter</filter-name>  
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>  
</filter>  
<filter-mapping>  
    <filter-name>PrimeFaces FileUpload Filter</filter-name>  
    <servlet-name>Faces Servlet</servlet-name>  
</filter-mapping>    

[/code]

jboss-web

<?xml version="1.0" encoding="UTF-8"?> <jboss-web> <!-- Links with JBoss the Realm to use --> <security-domain>java:/jaas/LoginCertRealm</security-domain> </jboss-web>

login-config

<application-policy name="LoginCertRealm"> <authentication> <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required"> <module-option name="dsJndiName">java:/LoginCertDS</module-option> <module-option name="principalsQuery">select password from profile where username=?</module-option> <module-option name="rolesQuery">select rolename, 'Roles' from user_roles where username=?</module-option> </login-module> </authentication> </application-policy>

-ds

<datasources> <local-tx-datasource> <jndi-name>LoginCertDS</jndi-name> <connection-url>jdbc:mysql://localhost:3306/ejbca</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver>mysql-connector-java-5.1.15.jar</driver> <user-name>root</user-name> <password>root</password> <metadata> <type-mapping>mySQL</type-mapping> </metadata> </local-tx-datasource> </datasources>

Mudei o nível do log e peguei isso:

2013-04-24 16:48:17,989 DEBUG [org.apache.catalina.connector.CoyoteAdapter] (http-127.0.2.1-8080-2) Requested cookie session id is 286143D134D3DF30D754EE612317B3E9 2013-04-24 16:48:17,989 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] (http-127.0.2.1-8080-2) Security checking request POST /CertificadoDigital-web/pages/public/j_security_check 2013-04-24 16:48:17,989 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] (http-127.0.2.1-8080-2) Authenticating username 'MPFontana' 2013-04-24 16:48:17,995 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] (http-127.0.2.1-8080-2) Authentication of 'MPFontana' was successful 2013-04-24 16:48:17,995 DEBUG [org.apache.catalina.authenticator.FormAuthenticator] (http-127.0.2.1-8080-2) Redirecting to original 'null' 2013-04-24 16:48:17,996 DEBUG [org.apache.catalina.authenticator.AuthenticatorBase] (http-127.0.2.1-8080-2) Failed authenticate() test ??/CertificadoDigital-web/pages/public/j_security_check 2013-04-24 16:48:18,404 DEBUG [org.apache.catalina.session.ManagerBase] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Start expire sessions StandardManager at 1366832898404 sessioncount 0 2013-04-24 16:48:18,404 DEBUG [org.apache.catalina.session.ManagerBase] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) End expire sessions StandardManager processingTime 0 expired sessions: 0 2013-04-24 16:48:18,404 DEBUG [org.apache.catalina.session.ManagerBase] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Start expire sessions StandardManager at 1366832898404 sessioncount 0 2013-04-24 16:48:18,404 DEBUG [org.apache.catalina.session.ManagerBase] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) End expire sessions StandardManager processingTime 0 expired sessions: 0

Redirecting to original ‘null’, o que seria isso?

por isso

<url-pattern>*.xhtml</url-pattern> <url-pattern>*.jsp</url-pattern>

deixe apenas um que no caso, seria esse

ou

o erro não é isso

[quote=tmvolpato]por isso

<url-pattern>*.xhtml</url-pattern> <url-pattern>*.jsp</url-pattern>

deixe apenas um que no caso, seria esse

ou

o erro não é isso[/quote]

Como assim o erro não é isso? Foi exatamente isso!

Obrigado camarada! Nem imaginaria que por uma bobeira dessa eu iria ter esse problema. O problema é que em diversos livros e tutoriais, o autor deixa diversas patterns declaradas, podendo gerar esse tipo de erro, o qual encontrei diversos usuários na rede na mesma situação só que sem solução.

aquilo estava errado
mas não pensei que o erro poderia ser aquilo
pq não conheço JAAS

flw

[quote=tmvolpato]aquilo estava errado
mas não pensei que o erro poderia ser aquilo
pq não conheço JAAS

flw[/quote]

Estava eu aqui lendo e relendo algumas coisas e descobri o real erro disso, o que não tem nada a ver com isso, é o seguinte.

O JAAS, quando autenticado (user and password validos), internamente vc não configura qual a página que vc deverá ser encaminhado, então o que acontece é o seguinte, o JAAS encaminha para a ultima página que vc acessou, e necessariamente deverá ser a que vc esta tentando acessar (os recursos protegidos). Ou seja, eu estava encaminhando no meu index.xhtml para a própria página de login, então quando eu autenticava o usuário, o JAAS me encaminhava para a própria página de login, ocasionando o erro. O que eu fiz? Simplesmente alterei a página do index.xhtml para a página que devo ser encaminhado quando logar, mas como no primeiro acesso eu não estou autenticado, serei encaminhado para página de login.

1 curtida