0 Replies Latest reply on May 30, 2019 8:08 AM by rsk_jboss

    Getting Error while Implementation Custom LoginModule

    rsk_jboss

      I wrote the simple custom Login module and deployed in jboss and getting the following error message during jboss start.

                 Caused by: javax.security.auth.login.LoginException: unable to find LoginModule class: xxx.xxx.xxx.xxx.xxx.GenerateEncryptedVaultPassword

       

      Here i explain what i did as part of my module.

       

      1. write a simple java class and extends UsernamePasswordLoginModule and override the required methods. referred the below link.

                  blog/MySimpleUsernamePasswordLoginModule.java at master · holyjak/blog · GitHub

      2. added the below changes in /../../conf/standalone/standalone.xml file.

                       <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">

                          <connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>

                          <driver>h2</driver>

                          <security>

                             <security-domain>EncryptedPassword</security-domain>

                          </security>

                      </datasource>

       

       

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

                          <authentication>

                              <login-module code="xxx.xxx.xxx.xxx.GenerateEncryptedVaultPassword" flag="required"/>

                          </authentication>

                      </security-domain>

       

      3. create the module dir and kept my jar and module.xml files

       

                 Location : /../../ keycloak/modules/system/layers/keycloak/org  

                                            mkdir passwordhandler/main/

                                                                  - > module.xml

                                                                   -> passwordhandler.jar

       

      module.xml

      ----------

      <?xml version="1.0" ?>

      <module xmlns="urn:jboss:module:1.3" name="org.passwordhandler">

          <resources>

              <resource-root path="passwordhandler-0.1.0-SNAPSHOT.jar" />

          </resources>

      </module>

       

       

      After done the all above changes i started the jboss server and getting the below error message with startup fail.

      Could you please someone help me to resolve this ?

       

       

      ERROR:

      ------------

      07:42:21,914 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 51) MSC000001: Failed to start service jboss.deployment.unit."keycloak-server.war".undertow-deployment: org.jboss.msc.service.StartException in service jboss.deployment.unit."keycloak-server.war".undertow-deployment: java.lang.RuntimeException: RESTEASY003325: Failed to construct public org.keycloak.services.resources.KeycloakApplication(javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:81)

      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

      at java.util.concurrent.FutureTask.run(FutureTask.java:266)

      at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)

      at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)

      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)

      at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)

      at java.lang.Thread.run(Thread.java:748)

      at org.jboss.threads.JBossThread.run(JBossThread.java:485)

      Caused by: java.lang.RuntimeException: RESTEASY003325: Failed to construct public org.keycloak.services.resources.KeycloakApplication(javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)

      at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:166)

      at org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2757)

      at org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:363)

      at org.jboss.resteasy.spi.ResteasyDeployment.startInternal(ResteasyDeployment.java:276)

      at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:88)

      at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:119)

      at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)

      at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)

      at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)

      at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)

      at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:300)

      at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:140)

      at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:583)

      at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:554)

      at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)

      at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)

      at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502)

      at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:596)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:97)

      at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:78)

      ... 8 more

      Caused by: java.lang.RuntimeException: Failed to connect to database

      at org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.getConnection(DefaultJpaConnectionProviderFactory.java:381)

      at org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.lazyInit(LiquibaseDBLockProvider.java:65)

      at org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.lambda$waitForLock$0(LiquibaseDBLockProvider.java:97)

      at org.keycloak.models.utils.KeycloakModelUtils.suspendJtaTransaction(KeycloakModelUtils.java:678)

      at org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProvider.waitForLock(LiquibaseDBLockProvider.java:95)

      at org.keycloak.services.resources.KeycloakApplication$1.run(KeycloakApplication.java:148)

      at org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)

      at org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:141)

      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

      at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:154)

      ... 31 more

      Caused by: java.lang.SecurityException: PBOX00016: Access denied: authentication failed

      at org.jboss.security.plugins.JBossSecuritySubjectFactory.createSubject(JBossSecuritySubjectFactory.java:92)

      at org.jboss.jca.core.security.picketbox.PicketBoxSubjectFactory.createSubject(PicketBoxSubjectFactory.java:66)

      at org.jboss.as.connector.subsystems.datasources.AbstractDataSourceService$AS7DataSourceDeployer$1.createSubject(AbstractDataSourceService.java:509)

      at org.jboss.jca.core.connectionmanager.SecurityActions.createSubject(SecurityActions.java:56)

      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getSubject(AbstractConnectionManager.java:1060)

      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:788)

      at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)

      at org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)

      at org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.getConnection(DefaultJpaConnectionProviderFactory.java:375)

      ... 43 more

      Caused by: javax.security.auth.login.LoginException: unable to find LoginModule class: xxx.xxx.xxx.xxx.xxx.GenerateEncryptedVaultPassword

      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:794)

      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)

      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)

      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)

      at java.security.AccessController.doPrivileged(Native Method)

      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)

      at javax.security.auth.login.LoginContext.login(LoginContext.java:587)

      at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:406)

      at org.jboss.security.authentication.JBossCachedAuthenticationManager.proceedWithJaasLogin(JBossCachedAuthenticationManager.java:345)

      at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:323)

      at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:146)

      at org.jboss.security.plugins.JBossSecuritySubjectFactory.createSubject(JBossSecuritySubjectFactory.java:84)

      ... 51 more