diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java index 288eadccf002..3309acdd1dec 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/CommunityEditionModule.java @@ -29,7 +29,6 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.DatabaseAvailability; import org.neo4j.kernel.NeoStoreDataSource; -import org.neo4j.kernel.api.security.AuthManager; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.SchemaWriteGuard; import org.neo4j.kernel.impl.api.index.RemoveOrphanConstraintIndexesOnStartup; @@ -210,40 +209,6 @@ else if ( key.equals( "" ) ) throw new IllegalArgumentException( "No lock manager found with the name '" + key + "'." ); } - public static AuthManager createAuthManager( Config config, LogService logging ) - { - boolean authEnabled = config.get( GraphDatabaseSettings.auth_enabled ); - if ( !authEnabled ) - { - return AuthManager.NO_AUTH; - } - - String key = config.get( GraphDatabaseSettings.auth_manager ); - for ( AuthManager.Factory candidate : Service.load( AuthManager.Factory.class ) ) - { - String candidateId = candidate.getKeys().iterator().next(); - if ( candidateId.equals( key ) ) - { - return candidate.newInstance( config, logging.getUserLogProvider() ); - } - else if ( key.equals( "" ) ) - { - logging.getInternalLog( CommunityFacadeFactory.class ) - .info( "No auth manager implementation specified, defaulting to '" + candidateId + "'" ); - return candidate.newInstance( config, logging.getUserLogProvider() ); - } - } - - if ( key.equals( "" ) ) - { - logging.getUserLog( CommunityFacadeFactory.class ) - .error( "No auth manager implementation specified and no default could be loaded." ); - throw new IllegalArgumentException( "No auth manager found." ); - } - - throw new IllegalArgumentException( "No auth manager found with the name '" + key + "'." ); - } - protected TransactionHeaderInformationFactory createHeaderInformationFactory() { return TransactionHeaderInformationFactory.DEFAULT; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java index d943ac2b14ac..d1cdbb0bbab4 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/EditionModule.java @@ -19,11 +19,12 @@ */ package org.neo4j.kernel.impl.factory; -import java.io.File; - import org.neo4j.graphdb.DependencyResolver; +import org.neo4j.graphdb.factory.GraphDatabaseSettings; +import org.neo4j.helpers.Service; import org.neo4j.io.pagecache.IOLimiter; import org.neo4j.kernel.NeoStoreDataSource; +import org.neo4j.kernel.api.security.AuthManager; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.CommitProcessFactory; import org.neo4j.kernel.impl.api.SchemaWriteGuard; @@ -34,6 +35,7 @@ import org.neo4j.kernel.impl.coreapi.CoreAPIAvailabilityGuard; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.Configuration; import org.neo4j.kernel.impl.locking.Locks; +import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.kernel.impl.store.format.RecordFormats; import org.neo4j.kernel.impl.store.id.IdGeneratorFactory; import org.neo4j.kernel.impl.transaction.TransactionHeaderInformationFactory; @@ -102,4 +104,38 @@ protected EditionModule.SPI spi() { return null; } + + public static AuthManager createAuthManager( Config config, LogService logging ) + { + boolean authEnabled = config.get( GraphDatabaseSettings.auth_enabled ); + if ( !authEnabled ) + { + return AuthManager.NO_AUTH; + } + + String key = config.get( GraphDatabaseSettings.auth_manager ); + for ( AuthManager.Factory candidate : Service.load( AuthManager.Factory.class ) ) + { + String candidateId = candidate.getKeys().iterator().next(); + if ( candidateId.equals( key ) ) + { + return candidate.newInstance( config, logging.getUserLogProvider() ); + } + else if ( key.equals( "" ) ) + { + logging.getInternalLog( CommunityFacadeFactory.class ) + .info( "No auth manager implementation specified, defaulting to '" + candidateId + "'" ); + return candidate.newInstance( config, logging.getUserLogProvider() ); + } + } + + if ( key.equals( "" ) ) + { + logging.getUserLog( CommunityFacadeFactory.class ) + .error( "No auth manager implementation specified and no default could be loaded." ); + throw new IllegalArgumentException( "No auth manager found." ); + } + + throw new IllegalArgumentException( "No auth manager found with the name '" + key + "'." ); + } } diff --git a/enterprise/core-edge/pom.xml b/enterprise/core-edge/pom.xml index 35764211e0d9..cf3abc83ab52 100644 --- a/enterprise/core-edge/pom.xml +++ b/enterprise/core-edge/pom.xml @@ -119,6 +119,12 @@ test + + org.neo4j + neo4j-security-enterprise + ${project.version} + + org.neo4j neo4j-logging diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/EnterpriseCoreEditionModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/EnterpriseCoreEditionModule.java index e095fc86ab55..a93fc19cf1f9 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/EnterpriseCoreEditionModule.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/core/EnterpriseCoreEditionModule.java @@ -450,6 +450,8 @@ fileSystem, new File( clusterStateDirectory, "id-allocation-state" ), "id-alloca dependencies.satisfyDependency( createKernelData( fileSystem, platformModule.pageCache, storeDir, config, graphDatabaseFacade, life ) ); + life.add( dependencies.satisfyDependency( createAuthManager( config, logging ) ) ); + headerInformationFactory = createHeaderInformationFactory(); schemaWriteGuard = createSchemaWriteGuard(); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java index bf9dc609605c..25502ac36ff3 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/server/edge/EnterpriseEdgeEditionModule.java @@ -119,6 +119,9 @@ public EnterpriseEdgeEditionModule( final PlatformModule platformModule, life.add( dependencies.satisfyDependency( new DefaultKernelData( fileSystem, pageCache, storeDir, config, graphDatabaseFacade ) ) ); + + life.add( dependencies.satisfyDependency( createAuthManager( config, logging ) ) ); + headerInformationFactory = TransactionHeaderInformationFactory.DEFAULT; schemaWriteGuard = () -> {}; diff --git a/enterprise/ha/pom.xml b/enterprise/ha/pom.xml index 1b28c6f99558..b9c65015ac0e 100644 --- a/enterprise/ha/pom.xml +++ b/enterprise/ha/pom.xml @@ -100,6 +100,11 @@ ${project.version} test + + org.neo4j + neo4j-security-enterprise + ${project.version} + junit diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java index cac354f05bb8..0dc3c88e0cde 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java @@ -478,6 +478,9 @@ public void elected( String role, InstanceId instanceId, URI electedMember ) dependencies.satisfyDependency( createKernelData( config, platformModule.graphDatabaseFacade, members, fs, platformModule.pageCache, storeDir, lastUpdateTime, lastTxIdGetter, life ) ); + + life.add( dependencies.satisfyDependency( createAuthManager( config, logging ) ) ); + commitProcessFactory = createCommitProcessFactory( dependencies, logging, monitors, config, paxosLife, clusterClient, members, platformModule.jobScheduler, master, requestContextFactory, componentSwitcherContainer, logEntryReader );