From aa7d215a9a174428f4f76244b932797d9b87b910 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 28 Jun 2013 10:41:56 -0400
Subject: [PATCH] Exclude federation user from container principal auto-create

---
 src/main/java/com/gitblit/GitBlit.java |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index 1f9a947..6285733 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -749,10 +749,7 @@
 			if (usernameDecoded.equalsIgnoreCase(Constants.FEDERATION_USER)) {
 				List<String> tokens = getFederationTokens();
 				if (tokens.contains(pw)) {
-					// the federation user is an administrator
-					UserModel federationUser = new UserModel(Constants.FEDERATION_USER);
-					federationUser.canAdmin = true;
-					return federationUser;
+					return getFederationUser();
 				}
 			}
 		}
@@ -846,7 +843,8 @@
 					logger.debug(MessageFormat.format("{0} authenticated by servlet container principal from {1}",
 							user.username, httpRequest.getRemoteAddr()));
 					return user;
-				} else if (settings.getBoolean(Keys.realm.container.autoCreateAccounts, true)) {
+				} else if (settings.getBoolean(Keys.realm.container.autoCreateAccounts, false)
+						&& !username.equalsIgnoreCase(Constants.FEDERATION_USER)) {
 					// auto-create user from an authenticated container principal
 					user = new UserModel(username.toLowerCase());
 					user.displayName = username;
@@ -1025,6 +1023,13 @@
 		String usernameDecoded = decodeUsername(username);
 		return userService.deleteUser(usernameDecoded);
 	}
+	
+	protected UserModel getFederationUser() {
+		// the federation user is an administrator
+		UserModel federationUser = new UserModel(Constants.FEDERATION_USER);
+		federationUser.canAdmin = true;
+		return federationUser;
+	}
 
 	/**
 	 * Retrieve the user object for the specified username.

--
Gitblit v1.9.1