2 Replies Latest reply on Dec 7, 2011 1:08 PM by Rajesh Kumar

    javax.jms.JMSSecurityException: User null is NOT authenticated

    Rajesh Kumar Newbie

      I am getting the "User null is NOT authenticated" exception in JBoss after migrating from HSQLDB to Mysql for JBoss Messaging.

       

      Configuration details:

       

      JBoss Server 5.1 (4 node cluster)

      Mysql 5.5

       

       

      Heres what i did to migrate from HSQLDB to Mysql:

       

      1. Copied the Mysql JDBC driver (mysql-connector-java-5.1.1.4-bin) to the lib folder of the nodes in JBoss.
      2. Replacde the file hsqldb-ds.xml with mysql-ds.xml in the deploy folder in JBoss.
      3. Replaced the file hsqldb-persistence-service.xml with mysqldb-persistence-service.xml in the messaging folder under deploy in JBoss.
      4. Updated the file mysql-ds.xml to have the following:

                                  

      <local-tx-datasource>

      <jndi-name>defaultDS</jndi-name>

      <connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url>

      <driver-class>com.mysql.jdbc.Driver</driver-class>

      <user-name>uname</user-name>

      <password>pwd</password>

      <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>

      <min-pool-size>20</min-pool-size>

        <max-pool-size>100</max-pool-size>

      <security-domain>MySqlDbRealm</security-domain>


          

         5.   Uncommented the "guest=guest" entry in the messaging-users file.


         6.  Added the following in the login-config file present in jboss/conf folder:

                    

      <application-policy name = "MySqlDbRealm">

      <authentication>

      <login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule" flag = "required">

      <module-option name = "principal">uname</module-option>

      <module-option name = "userName">uname</module-option>

      <module-option name ="password">pwd</module-option>

      <module-option name ="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=DefaultDS</module-option>

      </login-module>

      </authentication>

      </application-policy>

       

        7.  Added a reference to the MySqlDbRealm in the mysql-ds file by adding the following:

                      <security-domain>MySqlDbRealm</security-domain>

        8.  Ensured that the <type-mapping>mySQL</type-mapping> property vale present in mysql-ds.xml file is the same as the <type-mapping>              property in standardjbosscmp-jdbc.xml file.

       

       

      I am guessing, i am missing some configuration which is causing the issue. Could someone educate me on what needs to be updated to fix this issue. I see a few people have the same issue, but was not able to find a concrete solution or a pointer to the root cause of the issue.

       

      Thanks

      Rajesh

       


        • 1. Re: javax.jms.JMSSecurityException: User null is NOT authenticated
          Anil Mathew Newbie

          I don't think you need to do the Step 3 (Replaced the file hsqldb-persistence-service.xml with mysqldb-persistence-service.xml in the messaging folder under deploy in JBoss.) to migrate to MySQL database.

           

          Also in the Step4, you already have the <user-name> and <password>. So I am not sure why you are adding <security-domain> into it (for additional security?). Either way if you remove the <security-domain> it should work fine.

           

           

          • 2. Re: javax.jms.JMSSecurityException: User null is NOT authenticated
            Rajesh Kumar Newbie

            Hi all,

            I finally managed to fix the issue and following is what we did:

            Added the below given snippet to the mysql-ds.xml file which does a background check on the connection pool and ensures that there are no stale connection objects in the pool. Apparently, it was the stale connection objects which caused the issue.

            <code>
            <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
            <background-validation-millis>100</background-validation-millis>
            <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
            </code>

            Hope this helps some one who has the same issue and wants to know what could fix it.