From 4a1ffbfdccd0d42e44a164bdbd89176fe1a098ef Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sat, 3 Dec 2016 13:39:42 -0800 Subject: [PATCH] GUACAMOLE-136: Move password reset flow into own function. Invoke from getUserContext(), not authenticateUser(), such that secondary authentication factors have a chance to invalidate the auth attempt prior to password reset. --- .../JDBCAuthenticationProviderService.java | 6 ++ .../guacamole/auth/jdbc/user/UserService.java | 90 ++++++++++++------- 2 files changed, 62 insertions(+), 34 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderService.java index 8f98c74cf..a0d422a39 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/JDBCAuthenticationProviderService.java @@ -25,6 +25,7 @@ import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.auth.jdbc.sharing.user.SharedAuthenticatedUser; import org.apache.guacamole.auth.jdbc.user.ModeledUser; import org.apache.guacamole.auth.jdbc.user.ModeledUserContext; +import org.apache.guacamole.auth.jdbc.user.UserModel; import org.apache.guacamole.auth.jdbc.user.UserService; import org.apache.guacamole.net.auth.AuthenticatedUser; import org.apache.guacamole.net.auth.AuthenticationProvider; @@ -98,6 +99,11 @@ public class JDBCAuthenticationProviderService implements AuthenticationProvider } + // Update password if password is expired + UserModel userModel = user.getModel(); + if (userModel.isExpired()) + userService.resetExpiredPassword(user, authenticatedUser.getCredentials()); + // Link to user context ModeledUserContext context = userContextProvider.get(); context.init(user.getCurrentUser()); diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java index 16f25b5b1..c83d6cbe7 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserService.java @@ -319,40 +319,6 @@ public class UserService extends ModeledDirectoryObjectService