2013-08-27 3 views
1

J'essaie d'implémenter l'authentification JAAS basée sur la base de données sur le serveur d'applications JBoss 7.1, mais en obtenant une erreur en dessous. Tout pointeur sera utile.JBoss 7.1 Authentification JAAS basée sur la base de données - l'authentification a échoué

J'ai des détails de configuration partagés.

14: 46: 03807 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] (http-localhost/127.0.0.1: 8080-2) mot de passe utilisateur Obtenu 14: 46: 03808 DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (http-localhost/127.0.0.1: 8080-2) AppDS: returnConnexion (40c2d8ac, false) [1/9] 14:46 : 03 808 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] (http-localhost/127.0.0.1: 8080-2) resumeAnyTransaction 14: 46: 03 808 TRACE [org.jboss.security.auth.spi. DatabaseServerLoginModule] (http-localhost/127.0.0.1: 8080-2) utilisateur 'test_user' authentifié, loginOk = true 14: 46: 03808 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] (HTTP- localhost/127.0.0.1: 8080-2) abandonne 14: 46: 03,809 ERREUR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http-localhost/127.0.0.1: 8080-2) Echec de connexion: javax. security.auth.login.FailedLoginException: Mot de passe incorrect /mot de passe requis à org.jboss.security.auth.spi.UsernamePasswordLoginModule.login (UsernamePasswordLoginModule.java:293) [picketbox-4.0.9.Final-redhat-1 .jar: 4.0.9.Final- redhat-1] à sun.reflect.NativeMethodAccessorImpl.invoke0 (Méthode natif) [rt.jar: 1.7.0_25] à sun.reflect.NativeMethodAccessorImpl.invoke (source inconnue) [rt.jar: 1.7.0_25] à sun.reflect.DelegatingMethodAccessorImpl.invoke (Source inconnue) [rt.jar: 1.7.0_25] à java.lang.reflect.Method.invoke (Source inconnue) [rt.jar: 1.7.0_25] à javax .security.auth.login.LoginContext.invoke (source inconnue) [rt.jar: 1.7.0_25] at javax.security.auth.login.LoginContext.access $ 000 (source inconnue) [rt.jar: 1.7. 0_25] à javax.security.auth.login.LoginContext $ 4.run (source inconnue) [rt.jar: 1.7.0_25] à javax.security.auth.login.LoginContext $ 4.run (source inconnue) [rt.jar: 1.7.0_25] à java.security.AccessController.doPrivileged (méthode native) [rt.jar: 1.7.0_25] à javax.security.auth.login.LoginContext.invokePriv (Source inconnue) [rt.jar: 1.7.0_25] à javax.security.auth.login.LoginContext.login (Source inconnue) [rt.jar: 1.7.0_25] à org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin (JBossCachedAuthenticationManager.java:449) [picketbox-infinispan-4.0.9.Final-redhat-1.jar: 4.0.9.Final-redhat- 1] at org.jboss.security.authentication.JBossCachedAuthenticationManager.proceedWithJaasLogin (JBoss CachedAuthenticationManager.java:383) [picketbox-infinispan-4.0.9.Final-redhat-1.jar: 4.0.9.Final-redhat-1] à org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate (JBossCachedAuthenticationManager .java: 371) [picketbox-infinispan-4.0.9.Final-redhat-1.jar: 4.0.9.Final-redhat-1] à org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid (JBossCachedAuthenticationManager.java:160) [picketbox-infinispan-4.0.9.Final-redhat-1.jar: 4.0.9.Final-redhat-1] à org.jboss.as.web.security .JBossWebRealm.authenticate (JBossWebRealm.java:214) [jboss-as-web-7.1.2.Final-redhat-1.jar: 7.1.2.Final-redhat-1] à org.apache.catalina.authenticator .FormAuthenticator.authenticate (FormAuthenticator.java:280) [jbossweb-7.0.16.Final-redhat-1.jar:] au org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:381) [ jbossweb-7.0.16.Final-redhat-1.jar:] au org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke (WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.2.Final -chapeau rouge -1.jar: 7.1.2.Final-redhat-1] au org.jboss.as.web.security.SecurityContextAssociationValve.invoke (SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.2.Final -redhat-1.jar: 7.1.2.Final-redhat-1] au org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:155) [jbossweb-7.0.16.Final-redhat-1 .jar:] au org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) [jbossweb-7.0.16.Final-redhat-1.jar:] au org.apache.catalina.core .StandardEngineValve.invoke (StandardEngineValve.java:109) [jbossweb-7.0.16.Final-redhat-1.jar:] au org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:368) [ jbossweb-7.0.16.Final-redhat-1.jar:] à org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:877) [jbossweb-7.0.16.Final-redhat-1.jar:] au org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler. processus (Http11Protocol.java:679) [jbossweb-7.0.16.Final-redhat-1.jar:] au org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:931) [jbossweb-7.0.16.Final-redhat-1.jar:] à java.lang.Thread.run (Information inconnue Source) [rt.jar: 1.7.0_25]

jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE jboss-web PUBLIC 
    "-//JBoss//DTD Web Application 2.4//EN" 
    "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd"> 

<jboss-web> 
    <!-- <security-domain>java:/jaas/apsapp</security-domain> --> 
    <security-domain>other</security-domain> 
    <context-root>/app</context-root> 
</jboss-web> 

web.xml

<login-config> 
     <auth-method>FORM</auth-method> 
     <form-login-config> 
      <form-login-page>/login.xhtml</form-login-page> 
      <form-error-page>/login.xhtml</form-error-page> 
     </form-login-config> 
    </login-config> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Secured Content</web-resource-name> 
     <url-pattern>/auth/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>ADMINISTRATOR</role-name> 
     <role-name>AUTHENTICATED</role-name> 
    </auth-constraint> 
</security-constraint> 

<security-role> 
    <role-name>ADMINISTRATOR</role-name> 
</security-role> 
<security-role> 
    <role-name>AUTHENTICATED</role-name> 
</security-role> 

Standalone.xml

<subsystem xmlns="urn:jboss:domain:security:1.2"> 
      <security-domains> 
       <security-domain name="other" cache-type="default"> 
        <authentication> 
         <login-module code="Remoting" flag="optional"> 
          <module-option name="password-stacking" value="useFirstPass"/> 
         </login-module> 
         <login-module code="RealmDirect" flag="required"> 
          <module-option name="password-stacking" value="useFirstPass"/> 
         </login-module> 
         <login-module code="Database" flag="required"> 
          <module-option name="dsJndiName" value="java:jboss/datasources/appPgDS"/> 
          <module-option name="principalsQuery" value="select passwd from app.user where username=?"/> 
          <module-option name="rolesQuery" value="select role,'Roles' from app.userrole where username=?"/> 
          <module-option name="hashAlgorithm" value="MD5"/> 
          <module-option name="hashEncoding" value="base64"/> 
          <module-option name="hashCharset" value="UTF-8"/> 
          <module-option name="unauthenticatedIdentity" value="guest"/> 
         </login-module> 
        </authentication> 
       </security-domain> 

login.xhtml

<form id="loginForm" action="j_security_check" method="post"> 
     <input type="text" name="j_username" value="test_user" maxlength="22" /> 
     <input type="password" name="j_password" value="password" maxlength="22" /> 
     <input type="submit" /> 
    </form> 

Mot de passe généré

import org.jboss.security.auth.spi.*; 

String passwordHash = Util.createPasswordHash("MD5", "base64", null, null, "password"); 
//Value generated and stored in DB: X03MO1qnZdYdgyfeuILPmQ== 
+0

Avez-vous vérifié que vous avez enregistré le bon base64, UTF-8 dans MD5 hash votre base de données – Flo

+0

@Flo: oui Mot de passe vérifié. Script de génération de mot de passe inclus ci-dessus –

+0

voir http://stackoverflow.com/a/25612527/2490834 un problème similaire et ma solution – hypery2k

Répondre

1

Il a travaillé après avoir commenté les déclarations ci-dessous qui comparaissait par défaut dans standalone.xml.

<security-domain name="other" cache-type="default"> 
<login-module code="Remoting" flag="optional"> 
    <module-option name="password-stacking" value="useFirstPass"/> 
</login-module> 
<login-module code="RealmDirect" flag="required"> 
    <module-option name="password-stacking" value="useFirstPass"/> 
</login-module> 
Questions connexes