From e97c01c140841667b1fa50a9ffa41bb60952e4ec Mon Sep 17 00:00:00 2001 From: Fabrice Bacchella Date: Mon, 25 May 2015 23:02:13 +0200 Subject: Invalid kerberos patches, works now and with a test. --- .../com/gitblit/manager/AuthenticationManager.java | 29 ++++++++++++++++++++++ .../java/com/gitblit/manager/GitblitManager.java | 5 ++++ .../gitblit/manager/IAuthenticationManager.java | 10 ++++++++ 3 files changed, 44 insertions(+) (limited to 'src/main/java/com/gitblit/manager') diff --git a/src/main/java/com/gitblit/manager/AuthenticationManager.java b/src/main/java/com/gitblit/manager/AuthenticationManager.java index cbf0a1bd..38e45a6f 100644 --- a/src/main/java/com/gitblit/manager/AuthenticationManager.java +++ b/src/main/java/com/gitblit/manager/AuthenticationManager.java @@ -373,6 +373,35 @@ public class AuthenticationManager implements IAuthenticationManager { } + /** + * Return the UserModel for already authenticated user. + * + * This implementation assumes that the authentication has already take place + * (e.g. SSHDaemon) and that this is a validation/verification of the user. + * + * @param username + * @return a user object or null + */ + @Override + public UserModel authenticate(String username) { + if (username != null) { + if (!StringUtils.isEmpty(username)) { + UserModel user = userManager.getUserModel(username); + if (user != null) { + // existing user + logger.debug(MessageFormat.format("{0} authenticated externally", user.username)); + return validateAuthentication(user, AuthenticationType.CONTAINER); + } + logger.warn(MessageFormat.format("Failed to find UserModel for {0} during external authentication", + username)); + } + } else { + logger.warn("Empty user passed to AuthenticationManager.authenticate!"); + } + return null; + } + + /** * This method allows the authentication manager to reject authentication * attempts. It is called after the username/secret have been verified to diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java index deaa5347..8d25b3f5 100644 --- a/src/main/java/com/gitblit/manager/GitblitManager.java +++ b/src/main/java/com/gitblit/manager/GitblitManager.java @@ -661,6 +661,11 @@ public class GitblitManager implements IGitblit { return authenticationManager.authenticate(username, key); } + @Override + public UserModel authenticate(String username) { + return authenticationManager.authenticate(username); + } + @Override public UserModel authenticate(HttpServletRequest httpRequest, boolean requiresCertificate) { UserModel user = authenticationManager.authenticate(httpRequest, requiresCertificate); diff --git a/src/main/java/com/gitblit/manager/IAuthenticationManager.java b/src/main/java/com/gitblit/manager/IAuthenticationManager.java index d48ec534..c81092b9 100644 --- a/src/main/java/com/gitblit/manager/IAuthenticationManager.java +++ b/src/main/java/com/gitblit/manager/IAuthenticationManager.java @@ -70,6 +70,16 @@ public interface IAuthenticationManager extends IManager { */ UserModel authenticate(String username, char[] password); + /** + * Return the UserModel for already authenticated user. + * + * @see IUserService.authenticate(String, char[]) + * @param username + * @return a user object or null + * @since 1.7.0 + */ + UserModel authenticate(String username); + /** * Returns the Gitlbit cookie in the request. * -- cgit v1.2.3