diff --git oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java
index 995af25..2890f6f 100644
--- oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java
+++ oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java
@@ -76,6 +76,10 @@ public class ExternalLoginModule extends AbstractLoginModule {
      */
     public static final String PARAM_SYNC_HANDLER_NAME = "sync.handlerName";
 
+    private ExternalIdentityProviderManager idpManager;
+
+    private SyncManager syncManager;
+
     /**
      * internal configuration when invoked from a factory rather than jaas
      */
@@ -136,11 +140,13 @@ public class ExternalLoginModule extends AbstractLoginModule {
         if (idpName.isEmpty()) {
             log.error("External login module needs IPD name. Will not be used for login.");
         } else {
-            ExternalIdentityProviderManager idpMgr = WhiteboardUtils.getService(whiteboard, ExternalIdentityProviderManager.class);
-            if (idpMgr == null) {
+            if (idpManager == null) {
+                idpManager = WhiteboardUtils.getService(whiteboard, ExternalIdentityProviderManager.class);
+            }
+            if (idpManager == null) {
                 log.error("External login module needs IDPManager. Will not be used for login.");
             } else {
-                idp = idpMgr.getProvider(idpName);
+                idp = idpManager.getProvider(idpName);
                 if (idp == null) {
                     log.error("No IDP found with name {}. Will not be used for login.", idpName);
                 }
@@ -151,11 +157,13 @@ public class ExternalLoginModule extends AbstractLoginModule {
         if (syncHandlerName.isEmpty()) {
             log.error("External login module needs SyncHandler name. Will not be used for login.");
         } else {
-            SyncManager syncMgr = WhiteboardUtils.getService(whiteboard, SyncManager.class);
-            if (syncMgr == null) {
+            if (syncManager == null) {
+                syncManager = WhiteboardUtils.getService(whiteboard, SyncManager.class);
+            }
+            if (syncManager == null) {
                 log.error("External login module needs SyncManager. Will not be used for login.");
             } else {
-                syncHandler = syncMgr.getSyncHandler(syncHandlerName);
+                syncHandler = syncManager.getSyncHandler(syncHandlerName);
                 if (syncHandler == null) {
                     log.error("No SyncHandler found with name {}. Will not be used for login.", syncHandlerName);
                 }
@@ -405,4 +413,13 @@ public class ExternalLoginModule extends AbstractLoginModule {
         Class scClass = SimpleCredentials.class;
         return Collections.singleton(scClass);
     }
+
+
+    public void setSyncManager(SyncManager syncManager) {
+        this.syncManager = syncManager;
+    }
+
+    public void setIdpManager(ExternalIdentityProviderManager idpManager) {
+        this.idpManager = idpManager;
+    }
 }
\ No newline at end of file
diff --git oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModuleFactory.java oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModuleFactory.java
index f1d36c0..429f071 100644
--- oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModuleFactory.java
+++ oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModuleFactory.java
@@ -165,7 +165,9 @@ public class ExternalLoginModuleFactory implements LoginModuleFactory {
      */
     @Override
     public LoginModule createLoginModule() {
-        return new ExternalLoginModule(osgiConfig);
+        ExternalLoginModule lm = new ExternalLoginModule(osgiConfig);
+        lm.setIdpManager(idpManager);
+        lm.setSyncManager(syncManager);
+        return lm;
     }
-
 }
\ No newline at end of file
