1 Reply Latest reply on Dec 31, 2014 5:48 AM by rimolive

    Problema com JMS no modo Domain - JBoss EAP 6.2.3

    marco.simoes

      Pessoal,

       

      Estou com um problema na autenticação da fila JMS no modo Domain.

       

      No meu ambiente eu possuo um JBoss EAP 6.2.3 como Domain Controller sem nenhum servidor associado, e em outra máquina eu tenho um Host Controller com um servidor associado no profile FULL.

       

      Criei uma fila JMS com o  nome "testQueue".

       

      Quando eu crio um Client para enviar menssagens para a fila, apontando para o server do Host Controller na porta 4447 eu não consigo me autenticar e o seguinte erro acontece:

       

      Error

      ERROR: JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed

      Exception in thread "main" javax.naming.NamingException: Failed to connect to any server. Servers tried: [remote://192.168.56.80:4447]

          at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:213)

          at org.jboss.naming.remote.client.HaRemoteNamingStore.namingStore(HaRemoteNamingStore.java:144)

          at org.jboss.naming.remote.client.HaRemoteNamingStore.namingOperation(HaRemoteNamingStore.java:125)

          at org.jboss.naming.remote.client.HaRemoteNamingStore.lookup(HaRemoteNamingStore.java:241)

          at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:79)

          at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:83)

          at javax.naming.InitialContext.lookup(InitialContext.java:411)

          at com.teste.jms.QueueSend.init(QueueSend.java:35)

          at com.teste.jms.QueueSend.main(QueueSend.java:65)

       

      No meu Domain Contorller eu adicionei corretamente um usuário de ApplicationRealm, mas no meu Host Controller eu não adicionei nenhum usuário.

      O problema é resolvido quando eu adiciono o usuário no Host Controller, mas gostaria de utilizar uma solução onde não fosse necessário criar usuários nos Host Controlers e utilizar apenas os usuários criados no Domain Controller.

       

      Tentei a solução abaixo, mas não tive sucesso:

       

      Domain.xml

      <subsystem xmlns="urn:jboss:domain:remoting:1.1">

                      <connector name="remoting-connector" socket-binding="remoting" security-realm="JMSRealm"/>

                  </subsystem>

                

                  <subsystem xmlns="urn:jboss:domain:security:1.2">

                      <security-domains>

       

              <security-domain name="jms-security-domain" cache-type="default">

                  <authentication>

                    <login-module code="Remoting" flag="optional">

                      <module-option name="password-stacking" value="useFirstPass"/>

                    </login-module>

                    <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">

                      <module-option name="defaultUsersProperties" value="${jboss.server.config.dir}/application-users.properties"/>

                      <module-option name="defaultRolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>

                      <module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>

                      <module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>

                      <module-option name="password-stacking" value="useFirstPass"/>

                    </login-module>

                  </authentication>

              </security-domain>

      ....

       

       

      host.xml

            <security-realm name="JMSRealm">

                       <authentication>

                          <jaas name="jms-security-domain"/>

                        </authentication>

                   </security-realm>

       

      Alguem tem alguma idéia de como criar um security Realm para utilizar apenas os usuários do Domain Controller ?

       

      Vlw.

        • 1. Re: Problema com JMS no modo Domain - JBoss EAP 6.2.3
          rimolive

          Uma vez que você possui o JBoss EAP acredito que você possua as subscrições também, portanto nesse caso fique à vontade para abrir um chamado com o Suporte da Red Hat sobre isso.

           

          Mas respondendo sua pergunta: Não há como manter os usuários só no Master (ou Domain Controller) porque os mecanismos de segurança por padrão utilizam arquivos locais para controle de usuários. Uma sugestão seria trocar a segurança deles por um Security Store central (um banco de dados ou um ldap).