From 6e62782bc7d350b8a711242e1af7a040e687a720 Mon Sep 17 00:00:00 2001 From: shimingxy Date: Sun, 29 Mar 2020 19:24:27 +0800 Subject: [PATCH] RemeberMe fix --- .../org/maxkey/authn/AbstractAuthenticationProvider.java | 5 +++++ .../java/org/maxkey/authn/RealmAuthenticationProvider.java | 6 ++++++ .../main/java/org/maxkey/web/endpoint/LoginEndpoint.java | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java b/maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java index c39ace8e..c8d429f4 100644 --- a/maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java +++ b/maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java @@ -2,6 +2,7 @@ package org.maxkey.authn; import org.maxkey.authn.realm.AbstractAuthenticationRealm; import org.maxkey.authn.support.jwt.JwtLoginService; +import org.maxkey.authn.support.rememberme.AbstractRemeberMeService; import org.maxkey.config.ApplicationConfig; import org.maxkey.constants.LOGINTYPE; import org.maxkey.crypto.password.PasswordReciprocal; @@ -41,6 +42,10 @@ public abstract class AbstractAuthenticationProvider{ @Autowired @Qualifier("tfaOTPAuthn") protected AbstractOTPAuthn tfaOTPAuthn; + + @Autowired + @Qualifier("remeberMeService") + protected AbstractRemeberMeService remeberMeService; /* @Autowired @Qualifier("jwtLoginService") diff --git a/maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java b/maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java index 01d27f0b..eac54549 100644 --- a/maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java +++ b/maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java @@ -8,6 +8,8 @@ import org.slf4j.LoggerFactory; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.WebAuthenticationDetails; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; /** @@ -62,6 +64,10 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider if(auth.getJ_remeberme()!=null&&auth.getJ_remeberme().equals("remeberMe")){ WebContext.getSession().setAttribute(WebConstants.REMEBER_ME_SESSION,auth.getJ_username()); _logger.debug("do Remeber Me"); + remeberMeService.createRemeberMe( + userInfo.getUsername(), + WebContext.getRequest(), + ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse()); } } diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/LoginEndpoint.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/LoginEndpoint.java index 83277298..d7dfbfae 100644 --- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/LoginEndpoint.java +++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/endpoint/LoginEndpoint.java @@ -101,6 +101,7 @@ public class LoginEndpoint { //for RemeberMe login if(!isAuthenticated){ if(applicationConfig.getLoginConfig().isRemeberMe()&&remeberMe!=null&& !remeberMe.equals("")){ + _logger.debug("Try RemeberMe login "); isAuthenticated=remeberMeService.login(remeberMe,response); } } @@ -109,6 +110,7 @@ public class LoginEndpoint { if(applicationConfig.getLoginConfig().isKerberos()&& kerberosUserDomain!=null&&!kerberosUserDomain.equals("")&& kerberosToken!=null && !kerberosToken.equals("")){ + _logger.debug("Try Kerberos login "); isAuthenticated=kerberosService.login(kerberosToken,kerberosUserDomain); } } @@ -117,6 +119,7 @@ public class LoginEndpoint { if(applicationConfig.getLoginConfig().isWsFederation()&& StringUtils.isNotEmpty(wsFederationWA) && wsFederationWA.equalsIgnoreCase(WsFederationConstants.WSIGNIN)){ + _logger.debug("Try WsFederation login "); //isAuthenticated=wsFederationService.login(wsFederationWA,wsFederationWResult,request); } } @@ -135,6 +138,7 @@ public class LoginEndpoint { //modelAndView.addObject("jwtToken",jwtLoginService.buildLoginJwt()); //load Social Sign On Providers if(applicationConfig.getLoginConfig().isSocialSignOn()){ + _logger.debug("Load Social Sign On Providers "); modelAndView.addObject("ssopList", socialSignOnProviderService.getSocialSignOnProviders()); } }