2014-06-12 1 views
1

J'essaye d'écrire mon LoginModule de costum pour être employé dans mon service de REST avec l'autorisation de base. Pour cela, j'ai fait ce qui suit:JAAS custom LoginModule

  1. J'ai écrit mon propre LoginModule qui s'appelle QuarkLoginModule.
  2. Ajouté à web.xml extrait suivant:

    <security-role> 
        <role-name>researcher</role-name> 
    </security-role> 
    <security-constraint> 
        <display-name>SecurityConstraint</display-name> 
        <web-resource-collection> 
         <web-resource-name>Schedule</web-resource-name> 
         <url-pattern>/ws/*</url-pattern> 
        </web-resource-collection> 
        <auth-constraint> 
         <role-name>researcher</role-name> 
        </auth-constraint> 
        <user-data-constraint> 
         <transport-guarantee>NONE</transport-guarantee> 
        </user-data-constraint> 
    </security-constraint> 
    <login-config> 
        <auth-method>BASIC</auth-method> 
        <realm-name>quark</realm-name> 
    </login-config> 
    
  3. fichier Créé en /ejb/src/main/resources/META-INF/login.config avec le contenu suivant:

    quark { 
    edu.quark.auth.QuarkLoginModule required debug=true; 
    } 
    
  4. Ajouté à la configuration suivante d'exécution JBoss à la section des arguments VM:

    "-Djava.security.auth.login.config=/home/desertfox/Dresden/cbse/quark/ams-quark-1/ejb/src/main/resources/META-INF/login.config" 
    
  5. Ajouté extrait suivant à standalone.xml:

    <security-domain name="quark" cache-type="default"> 
        <authentication> 
         <login-module code="edu.quark.auth.QuarkLoginModule" flag="sufficient"> 
          <module-option name="roles" value="researcher"/> 
          <module-option name="realm" value="quark"/> 
         </login-module>       
        </authentication>         
    </security-domain> 
    

Mais au lieu d'appeler mon LoginModule je reçois un message d'erreur sur un mauvais nom/mot de passe tout le temps. Et je me exception suivante:

02:43:44,825 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http-localhost-127.0.0.1-8080-1) Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required 
    at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:270) [picketbox-4.0.7.Final.jar:4.0.7.Final] 
    at org.jboss.security.auth.spi.UsersRolesLoginModule.login(UsersRolesLoginModule.java:155) [picketbox-4.0.7.Final.jar:4.0.7.Final] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_21] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_21] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_21] 
    at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_21] 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784) [rt.jar:1.7.0_21] 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) [rt.jar:1.7.0_21] 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698) [rt.jar:1.7.0_21] 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696) [rt.jar:1.7.0_21] 
    at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_21] 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:695) [rt.jar:1.7.0_21] 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:594) [rt.jar:1.7.0_21] 
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:449) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final] 
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.proceedWithJaasLogin(JBossCachedAuthenticationManager.java:383) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final] 
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:371) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final] 
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:160) [picketbox-infinispan-4.0.7.Final.jar:4.0.7.Final] 
    at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.java:214) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
    at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:180) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:455) [jbossweb-7.0.13.Final.jar:] 
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] 
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21] 

Comme je peux voir, au lieu de mon module, quelqu'un par défaut est appelé UsersRolesLoginModule.

Pourriez-vous me dire, s'il vous plaît, quoi d'autre pourrais-je essayer?

Répondre

1

Peut-être que vous ne définissez pas le domaine de sécurité correct "quark"? Cela peut être fait en utilisant un fichier jboss-web.xml ou en utilisant l'annotation org.jboss.ejb3.annotation.SecurityDomain.

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_6_0.xsd" 
      version="7.1"> 
    <context-root>/ctxroot</context-root> 
    <security-domain>quark</security-domain> 
</jboss-web> 
Questions connexes