diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/accesscontrol/authentication/verifiers/UserVerifier.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/accesscontrol/authentication/verifiers/UserVerifier.java
index e51a602..a234e77 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/accesscontrol/authentication/verifiers/UserVerifier.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/accesscontrol/authentication/verifiers/UserVerifier.java
@@ -64,16 +64,24 @@
 
 		checkClientVersion(clientVersionInfo);
 		final String preparedPassword = preparePassword(password);
+		final String superUser = ServerConfiguration.getProperties()
+			.getProperty(ServerConfiguration.SUPER_USER, ServerConfiguration.SUPER_USER_DEFAULT);
 
-		if (verifySuperUser(username, preparedPassword) || verifyPassword(username, preparedPassword)) {
-			final AuthenticationInformation createAuthenticationInfo = createAuthenticationInfo();
-			createAuthenticationInfo.setResolvedACUser(ModelUtil.clone(findUser(username)));
-			return createAuthenticationInfo.toAPI();
+		if (verifySuperUser(username, preparedPassword)) {
+			return createAuthInfo(username);
+		} else if (!username.equals(superUser) && verifyPassword(username, preparedPassword)) {
+			return createAuthInfo(username);
 		}
 
 		throw new AccessControlException();
 	}
 
+	private ESAuthenticationInformation createAuthInfo(String username) throws AccessControlException {
+		final AuthenticationInformation createAuthenticationInfo = createAuthenticationInfo();
+		createAuthenticationInfo.setResolvedACUser(ModelUtil.clone(findUser(username)));
+		return createAuthenticationInfo.toAPI();
+	}
+
 	/**
 	 * Find the user with the given user name.
 	 *
