|
|
@@ -19,25 +19,19 @@ package org.maxkey.web.endpoint;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.HashMap;
|
|
|
-
|
|
|
import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
-
|
|
|
import org.maxkey.authn.AbstractAuthenticationProvider;
|
|
|
import org.maxkey.authn.LoginCredential;
|
|
|
import org.maxkey.authn.support.kerberos.KerberosService;
|
|
|
import org.maxkey.authn.support.socialsignon.service.SocialSignOnProviderService;
|
|
|
-import org.maxkey.authn.support.wsfederation.WsFederationConstants;
|
|
|
import org.maxkey.configuration.ApplicationConfig;
|
|
|
-import org.maxkey.constants.ConstantsStatus;
|
|
|
import org.maxkey.domain.UserInfo;
|
|
|
import org.maxkey.password.onetimepwd.AbstractOtpAuthn;
|
|
|
import org.maxkey.persistence.service.UserInfoService;
|
|
|
-import org.maxkey.util.StringUtils;
|
|
|
import org.maxkey.web.WebConstants;
|
|
|
import org.maxkey.web.WebContext;
|
|
|
-import org.maxkey.web.message.Message;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -46,11 +40,9 @@ import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* @author Crystal.Sea
|
|
|
*
|
|
|
@@ -64,6 +56,10 @@ public class LoginEndpoint {
|
|
|
ApplicationConfig applicationConfig;
|
|
|
|
|
|
@Autowired
|
|
|
+ @Qualifier("authenticationProvider")
|
|
|
+ AbstractAuthenticationProvider authenticationProvider ;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
@Qualifier("socialSignOnProviderService")
|
|
|
SocialSignOnProviderService socialSignOnProviderService;
|
|
|
|
|
|
@@ -75,14 +71,6 @@ public class LoginEndpoint {
|
|
|
@Qualifier("userInfoService")
|
|
|
UserInfoService userInfoService;
|
|
|
|
|
|
- /*@Autowired
|
|
|
- @Qualifier("wsFederationService")
|
|
|
- WsFederationService wsFederationService;*/
|
|
|
-
|
|
|
- @Autowired
|
|
|
- @Qualifier("authenticationProvider")
|
|
|
- AbstractAuthenticationProvider authenticationProvider ;
|
|
|
-
|
|
|
@Autowired
|
|
|
@Qualifier("tfaOtpAuthn")
|
|
|
protected AbstractOtpAuthn tfaOtpAuthn;
|
|
|
@@ -92,65 +80,34 @@ public class LoginEndpoint {
|
|
|
* @return
|
|
|
*/
|
|
|
@RequestMapping(value={"/login"})
|
|
|
- public ModelAndView login(
|
|
|
- HttpServletRequest request,
|
|
|
- HttpServletResponse response,
|
|
|
- @RequestParam(value=WebConstants.CAS_SERVICE_PARAMETER,required=false) String casService,
|
|
|
- @RequestParam(value=WebConstants.KERBEROS_TOKEN_PARAMETER,required=false) String kerberosToken,
|
|
|
- @RequestParam(value=WebConstants.KERBEROS_USERDOMAIN_PARAMETER,required=false) String kerberosUserDomain,
|
|
|
- @RequestParam(value=WsFederationConstants.WA,required=false) String wsFederationWA,
|
|
|
- @RequestParam(value=WsFederationConstants.WRESULT,required=false) String wsFederationWResult) {
|
|
|
-
|
|
|
+ public ModelAndView login() {
|
|
|
_logger.debug("LoginController /login.");
|
|
|
- ModelAndView modelAndView = new ModelAndView("login");
|
|
|
-
|
|
|
boolean isAuthenticated= WebContext.isAuthenticated();
|
|
|
- //for Kerberos login
|
|
|
- if(!isAuthenticated){
|
|
|
- if(applicationConfig.getLoginConfig().isKerberos()&&
|
|
|
- kerberosUserDomain!=null&&!kerberosUserDomain.equals("")&&
|
|
|
- kerberosToken!=null && !kerberosToken.equals("")){
|
|
|
- _logger.debug("Try Kerberos login ");
|
|
|
- isAuthenticated=kerberosService.login(kerberosToken,kerberosUserDomain);
|
|
|
- }
|
|
|
- }
|
|
|
- //for WsFederation login
|
|
|
- if(!isAuthenticated){
|
|
|
- if(applicationConfig.getLoginConfig().isWsFederation()&&
|
|
|
- StringUtils.isNotEmpty(wsFederationWA) &&
|
|
|
- wsFederationWA.equalsIgnoreCase(WsFederationConstants.WSIGNIN)){
|
|
|
- _logger.debug("Try WsFederation login ");
|
|
|
- //isAuthenticated=wsFederationService.login(wsFederationWA,wsFederationWResult,request);
|
|
|
- }
|
|
|
+
|
|
|
+ if(isAuthenticated){
|
|
|
+ return WebContext.redirect("/forwardindex");
|
|
|
}
|
|
|
|
|
|
//for normal login
|
|
|
- if(!isAuthenticated){
|
|
|
- modelAndView.addObject("isRemeberMe", applicationConfig.getLoginConfig().isRemeberMe());
|
|
|
- modelAndView.addObject("isKerberos", applicationConfig.getLoginConfig().isKerberos());
|
|
|
- modelAndView.addObject("isMfa", applicationConfig.getLoginConfig().isMfa());
|
|
|
- if(applicationConfig.getLoginConfig().isMfa()) {
|
|
|
- modelAndView.addObject("otpType", tfaOtpAuthn.getOtpType());
|
|
|
- modelAndView.addObject("otpInterval", tfaOtpAuthn.getInterval());
|
|
|
- }
|
|
|
-
|
|
|
- if( applicationConfig.getLoginConfig().isKerberos()){
|
|
|
- modelAndView.addObject("userDomainUrlJson", kerberosService.buildKerberosProxys());
|
|
|
-
|
|
|
- }
|
|
|
- modelAndView.addObject("isCaptcha", applicationConfig.getLoginConfig().isCaptcha());
|
|
|
- modelAndView.addObject("sessionid", WebContext.getSession().getId());
|
|
|
- //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());
|
|
|
- }
|
|
|
+ ModelAndView modelAndView = new ModelAndView("login");
|
|
|
+ modelAndView.addObject("isRemeberMe", applicationConfig.getLoginConfig().isRemeberMe());
|
|
|
+ modelAndView.addObject("isKerberos", applicationConfig.getLoginConfig().isKerberos());
|
|
|
+ modelAndView.addObject("isMfa", applicationConfig.getLoginConfig().isMfa());
|
|
|
+ if(applicationConfig.getLoginConfig().isMfa()) {
|
|
|
+ modelAndView.addObject("otpType", tfaOtpAuthn.getOtpType());
|
|
|
+ modelAndView.addObject("otpInterval", tfaOtpAuthn.getInterval());
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- if(isAuthenticated){
|
|
|
- return WebContext.redirect("/forwardindex");
|
|
|
+ if( applicationConfig.getLoginConfig().isKerberos()){
|
|
|
+ modelAndView.addObject("userDomainUrlJson", kerberosService.buildKerberosProxys());
|
|
|
+ }
|
|
|
+ modelAndView.addObject("isCaptcha", applicationConfig.getLoginConfig().isCaptcha());
|
|
|
+ modelAndView.addObject("sessionid", WebContext.getSession().getId());
|
|
|
+ //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());
|
|
|
}
|
|
|
|
|
|
Object loginErrorMessage=WebContext.getAttribute(WebConstants.LOGIN_ERROR_SESSION_MESSAGE);
|
|
|
@@ -203,51 +160,5 @@ public class LoginEndpoint {
|
|
|
|
|
|
return "fail";
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * view register
|
|
|
- * @return
|
|
|
- */
|
|
|
- @RequestMapping(value={"/register"})
|
|
|
- public ModelAndView register(HttpServletRequest request,HttpServletResponse response) {
|
|
|
-
|
|
|
- _logger.debug("LoginController /register.");
|
|
|
- ModelAndView modelAndView = new ModelAndView("registration/register");
|
|
|
- Object loginErrorMessage=WebContext.getAttribute(WebConstants.LOGIN_ERROR_SESSION_MESSAGE);
|
|
|
- modelAndView.addObject("loginErrorMessage", loginErrorMessage==null?"":loginErrorMessage);
|
|
|
- WebContext.removeAttribute(WebConstants.LOGIN_ERROR_SESSION_MESSAGE);
|
|
|
- return modelAndView;
|
|
|
- }
|
|
|
-
|
|
|
- @RequestMapping(value={"/registeron"})
|
|
|
- @ResponseBody
|
|
|
- public Message registeron(UserInfo userInfo,@RequestParam String emailMobile) throws ServletException, IOException {
|
|
|
- if(StringUtils.isNullOrBlank(emailMobile)) {
|
|
|
- return new Message(WebContext.getI18nValue("register.emailMobile.error"),"1");
|
|
|
- }
|
|
|
- if(StringUtils.isValidEmail(emailMobile)) {
|
|
|
- userInfo.setEmail(emailMobile);
|
|
|
- }
|
|
|
- if(StringUtils.isValidMobileNo(emailMobile)) {
|
|
|
- userInfo.setMobile(emailMobile);
|
|
|
- }
|
|
|
- if(!(StringUtils.isValidEmail(emailMobile)||StringUtils.isValidMobileNo(emailMobile))) {
|
|
|
- return new Message(WebContext.getI18nValue("register.emailMobile.error"),"1");
|
|
|
- }
|
|
|
- UserInfo temp=userInfoService.queryUserInfoByEmailMobile(emailMobile);
|
|
|
- if(temp!=null) {
|
|
|
- return new Message(WebContext.getI18nValue("register.emailMobile.exist"),"1");
|
|
|
- }
|
|
|
-
|
|
|
- temp=userInfoService.loadByUsername(userInfo.getUsername());
|
|
|
- if(temp!=null) {
|
|
|
- return new Message(WebContext.getI18nValue("register.user.error"),"1");
|
|
|
- }
|
|
|
- userInfo.setStatus(ConstantsStatus.ACTIVE);
|
|
|
- if(userInfoService.insert(userInfo)) {
|
|
|
- return new Message(WebContext.getI18nValue("login.text.register.success"),"0");
|
|
|
- }
|
|
|
- return new Message(WebContext.getI18nValue("login.text.register.error"),"1");
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
}
|