From dcae09742f42c728f5162c78491695721812e0d1 Mon Sep 17 00:00:00 2001 From: shimingxy Date: Sun, 17 May 2020 22:14:12 +0800 Subject: [PATCH] v 1.5.0 RC2 v 1.5.0 RC2 --- .../java/org/maxkey/MaxKeyMgtApplication.java | 35 ++++----- .../main/java/org/maxkey/MaxKeyMgtConfig.java | 22 +++++- .../java/org/maxkey/MaxKeyMgtMvcConfig.java | 72 +++++++++++++++++++ .../web/interceptor/HistoryLogsAdapter.java | 3 + .../web/interceptor/PermissionAdapter.java | 4 +- .../main/resources/META-INF/spring.factories | 3 +- .../src/main/resources/application.properties | 4 +- .../src/main/resources/banner.txt | 1 + .../src/main/resources/spring/maxkey-mgt.xml | 44 +----------- .../java/org/maxkey/MaxKeyApplication.java | 2 + .../interceptor/HistoryLoginAppAdapter.java | 13 +--- .../src/main/resources/application.properties | 1 + .../src/main/resources/banner.txt | 1 + .../src/main/resources/spring/maxkey.xml | 49 +++++++------ 14 files changed, 154 insertions(+), 100 deletions(-) create mode 100644 maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java diff --git a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java index 08adc90a7..c3c6f6268 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java @@ -15,29 +15,30 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ImportResource; @SpringBootApplication -@ImportResource(locations={"classpath:spring/maxkey-mgt.xml"}) +//@ImportResource(locations={"classpath:spring/maxkey-mgt.xml"}) @ComponentScan(basePackages = { - "org.maxkey.MaxKeyMgtConfig", - "org.maxkey.config", - "org.maxkey.domain", - "org.maxkey.domain.apps", - "org.maxkey.domain.userinfo", - "org.maxkey.web.endpoint", - "org.maxkey.web.contorller", - "org.maxkey.web.apps.contorller", - "org.maxkey.web.endpoint", - "org.maxkey.authn", - "org.maxkey.dao", - "org.maxkey.web", - "org.maxkey.web.tag" - } -) + "org.maxkey.MaxKeyMgtConfig", + "org.maxkey.MaxKeyMgtMvcConfig", + "org.maxkey.web.interceptor", + "org.maxkey.config", + "org.maxkey.domain", + "org.maxkey.domain.apps", + "org.maxkey.domain.userinfo", + "org.maxkey.web.endpoint", + "org.maxkey.web.contorller", + "org.maxkey.web.apps.contorller", + "org.maxkey.web.endpoint", + "org.maxkey.authn", + "org.maxkey.dao", + "org.maxkey.web", + "org.maxkey.web.tag" +}) @MapperScan("org.maxkey.dao.persistence,") public class MaxKeyMgtApplication extends SpringBootServletInitializer { private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtApplication.class); public static void main(String[] args) { - System.out.println("MaxKeyMgtApplication"); + _logger.info("Start MaxKeyMgtApplication ..."); ConfigurableApplicationContext applicationContext =SpringApplication.run(MaxKeyMgtApplication.class, args); InitializeContext initWebContext=new InitializeContext(applicationContext); diff --git a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java index 5983a964e..ccbc57e59 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java @@ -2,6 +2,8 @@ package org.maxkey; import javax.sql.DataSource; import org.maxkey.authz.oauth2.provider.client.JdbcClientDetailsService; +import org.maxkey.crypto.password.opt.impl.TimeBasedOtpAuthn; +import org.maxkey.authn.realm.jdbc.JdbcAuthenticationRealm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; @@ -9,6 +11,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration @@ -32,9 +35,26 @@ public class MaxKeyMgtConfig implements InitializingBean { DataSource dataSource,PasswordEncoder passwordReciprocal) { JdbcClientDetailsService clientDetailsService = new JdbcClientDetailsService(dataSource); clientDetailsService.setPasswordEncoder(passwordReciprocal); + _logger.debug("JdbcClientDetailsService inited."); return clientDetailsService; } - + + //以下内容可以注释掉后再xml中配置,xml引入在MaxKeyMgtApplication中 + @Bean(name = "authenticationRealm") + public JdbcAuthenticationRealm JdbcAuthenticationRealm( + JdbcTemplate jdbcTemplate) { + JdbcAuthenticationRealm authenticationRealm = new JdbcAuthenticationRealm(jdbcTemplate); + _logger.debug("JdbcAuthenticationRealm inited."); + return authenticationRealm; + } + + @Bean(name = "tfaOptAuthn") + public TimeBasedOtpAuthn tfaOptAuthn() { + TimeBasedOtpAuthn tfaOptAuthn = new TimeBasedOtpAuthn(); + _logger.debug("TimeBasedOtpAuthn inited."); + return tfaOptAuthn; + } + @Override public void afterPropertiesSet() throws Exception { // TODO Auto-generated method stub diff --git a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java new file mode 100644 index 000000000..6d173c224 --- /dev/null +++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java @@ -0,0 +1,72 @@ +package org.maxkey; + +import org.maxkey.web.interceptor.HistoryLogsAdapter; +import org.maxkey.web.interceptor.PermissionAdapter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; + +@Configuration +@EnableWebMvc +public class MaxKeyMgtMvcConfig implements WebMvcConfigurer { + private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtMvcConfig.class); + @Autowired + PermissionAdapter permissionAdapter; + + @Autowired + HistoryLogsAdapter historyLogsAdapter; + + @Autowired + LocaleChangeInterceptor localeChangeInterceptor; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/static/**") + .addResourceLocations("classpath:/static/"); + registry.addResourceHandler("/templates/**") + .addResourceLocations("classpath:/templates/"); + _logger.debug("add addResourceHandler"); + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + //addPathPatterns 用于添加拦截规则 , 先把所有路径都加入拦截, 再一个个排除 + //excludePathPatterns 表示改路径不用拦截 + registry.addInterceptor(permissionAdapter) + .addPathPatterns("/main/**") + .addPathPatterns("/orgs/**") + .addPathPatterns("/userinfo/**") + .addPathPatterns("/apps/**") + .addPathPatterns("/groups/**") + .addPathPatterns("/groupMember/**") + .addPathPatterns("/groupPrivileges/**") + .addPathPatterns("/config/**") + .addPathPatterns("/logs/**") + ; + _logger.debug("add PermissionAdapter"); + + registry.addInterceptor(historyLogsAdapter) + .addPathPatterns("/users/*") + .addPathPatterns("/userinfo/**") + .addPathPatterns("/enterprises/**") + .addPathPatterns("/employees/**") + .addPathPatterns("/authInfo/**") + .addPathPatterns("/usercenter/**") + .addPathPatterns("/retrievePassword/**") + .addPathPatterns("/roles/**") + .addPathPatterns("/apps/**") + .addPathPatterns("/approles/**") + ; + _logger.debug("add HistoryLogsAdapter"); + registry.addInterceptor(localeChangeInterceptor); + _logger.debug("add LocaleChangeInterceptor"); + + } + +} diff --git a/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java b/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java index 4e56a7ee0..39fe45296 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java @@ -14,6 +14,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; @@ -25,6 +27,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; * @author Crystal.Sea * */ +@Component public class HistoryLogsAdapter extends HandlerInterceptorAdapter { private static final Logger _logger = LoggerFactory.getLogger(HistoryLogsAdapter.class); diff --git a/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java b/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java index cf475aed3..1efac9deb 100644 --- a/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java +++ b/maxkey-web-manage/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java @@ -12,6 +12,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; /** * 权限Interceptor处理 @@ -20,7 +22,7 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; * @author Crystal.Sea * */ - +@Component public class PermissionAdapter extends HandlerInterceptorAdapter { private static final Logger _logger = LoggerFactory.getLogger(PermissionAdapter.class); //无需Interceptor url diff --git a/maxkey-web-manage/src/main/resources/META-INF/spring.factories b/maxkey-web-manage/src/main/resources/META-INF/spring.factories index 99a285239..55fc464fe 100644 --- a/maxkey-web-manage/src/main/resources/META-INF/spring.factories +++ b/maxkey-web-manage/src/main/resources/META-INF/spring.factories @@ -5,4 +5,5 @@ org.maxkey.autoconfigure.KaptchaAutoConfiguration,\ org.maxkey.autoconfigure.MvcAutoConfiguration,\ org.maxkey.autoconfigure.JwtAuthnAutoConfiguration,\ org.maxkey.autoconfigure.RedisAutoConfiguration,\ -org.maxkey.MaxKeyMgtConfig +org.maxkey.MaxKeyMgtConfig,\ +org.maxkey.MaxKeyMgtMvcConfig diff --git a/maxkey-web-manage/src/main/resources/application.properties b/maxkey-web-manage/src/main/resources/application.properties index a64ce7d25..944a7119c 100644 --- a/maxkey-web-manage/src/main/resources/application.properties +++ b/maxkey-web-manage/src/main/resources/application.properties @@ -3,7 +3,6 @@ application.title=MaxKey application.name=MaxKey-Mgt application.formatted-version=v1.5.0 GA - #server config #server port server.port=9521 @@ -58,5 +57,6 @@ spring.freemarker.suffix=.ftl spring.mvc.static-path-pattern=/static/** spring.messages.basename=classpath:messages/message spring.messages.encoding=UTF-8 - +#main +spring.main.banner-mode=log spring.main.allow-bean-definition-overriding=true \ No newline at end of file diff --git a/maxkey-web-manage/src/main/resources/banner.txt b/maxkey-web-manage/src/main/resources/banner.txt index d12dba7ca..c0df3d639 100644 --- a/maxkey-web-manage/src/main/resources/banner.txt +++ b/maxkey-web-manage/src/main/resources/banner.txt @@ -1,3 +1,4 @@ + __ ___ __ __ / |/ /__ ___ __ / //_/__ __ __ / /|_/ / _ `/\ \ // ,< / -_) // / diff --git a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt.xml b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt.xml index 73b1d1940..53d24ab50 100644 --- a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt.xml +++ b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt.xml @@ -17,46 +17,7 @@ http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -105,8 +66,5 @@ - - - \ No newline at end of file diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java b/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java index bd0af68d0..23982f116 100644 --- a/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java +++ b/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java @@ -21,6 +21,8 @@ public class MaxKeyApplication extends SpringBootServletInitializer { * @param args args */ public static void main(String[] args) { + _logger.info("Start MaxKeyApplication ..."); + VFS.addImplClass(SpringBootVFS.class); ConfigurableApplicationContext applicationContext = SpringApplication.run(MaxKeyApplication.class, args); diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java index 67546fdc3..18eca1736 100644 --- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java +++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java @@ -37,21 +37,14 @@ public class HistoryLoginAppAdapter extends HandlerInterceptorAdapter { HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception { _logger.debug("postHandle"); - String appId = null; - if (WebContext.getAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID) != null) { - appId = WebContext.getAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID).toString(); - } - if (appId == null) { - PreLoginAppAdapter.getAppIdFromRequestUrl(request); - } - //Applications app=applicationsService.get(appId); + final Apps app = (Apps)WebContext.getAttribute(AuthorizeBaseEndpoint.class.getName()); String sessionId = (String)WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID); final UserInfo userInfo = WebContext.getUserInfo(); - _logger.debug("sessionId : " + sessionId + " ,appId : " + appId); + _logger.debug("sessionId : " + sessionId + " ,appId : " + app.getId()); HistoryLoginApps historyLoginApps = new HistoryLoginApps(); historyLoginApps.setId(historyLoginApps.generateId()); - historyLoginApps.setAppId(appId); + historyLoginApps.setAppId(app.getId()); historyLoginApps.setSessionId(sessionId); historyLoginApps.setAppName(app.getName()); historyLoginApps.setUid(userInfo.getId()); diff --git a/maxkey-web-maxkey/src/main/resources/application.properties b/maxkey-web-maxkey/src/main/resources/application.properties index 13b4a5923..196b303a8 100644 --- a/maxkey-web-maxkey/src/main/resources/application.properties +++ b/maxkey-web-maxkey/src/main/resources/application.properties @@ -64,4 +64,5 @@ spring.mvc.static-path-pattern=/static/** spring.messages.basename=classpath:messages/message spring.messages.encoding=UTF-8 #main +spring.main.banner-mode=log spring.main.allow-bean-definition-overriding=true diff --git a/maxkey-web-maxkey/src/main/resources/banner.txt b/maxkey-web-maxkey/src/main/resources/banner.txt index d12dba7ca..c0df3d639 100644 --- a/maxkey-web-maxkey/src/main/resources/banner.txt +++ b/maxkey-web-maxkey/src/main/resources/banner.txt @@ -1,3 +1,4 @@ + __ ___ __ __ / |/ /__ ___ __ / //_/__ __ __ / /|_/ / _ `/\ \ // ,< / -_) // / diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml index 7599162db..37d5ba432 100644 --- a/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml +++ b/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml @@ -17,7 +17,6 @@ http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> - @@ -99,7 +98,6 @@ - @@ -153,6 +151,8 @@ + + @@ -162,7 +162,7 @@ - + @@ -172,35 +172,30 @@ - - - - - - - + - + - - - - - - - + + + + + + + + - - + + + - - - + - + + @@ -213,7 +208,8 @@ - + + @@ -288,6 +284,9 @@ + + +