diff --git a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java
index b907a2149..f9e959331 100644
--- a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java
+++ b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java
@@ -41,6 +41,11 @@ public class RedisRemeberMeService extends AbstractRemeberMeService {
conn.close();
}
+ public RedisRemeberMeService(RedisConnectionFactory connectionFactory) {
+ super();
+ this.connectionFactory = connectionFactory;
+ }
+
public void setConnectionFactory(RedisConnectionFactory connectionFactory) {
this.connectionFactory = connectionFactory;
}
diff --git a/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java b/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java
index 0c701e31c..a409178d3 100644
--- a/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java
+++ b/maxkey-core/src/main/java/org/maxkey/autoconfigure/ApplicationAutoConfiguration.java
@@ -5,10 +5,17 @@ import java.io.IOException;
import javax.sql.DataSource;
import org.maxkey.authn.RealmAuthenticationProvider;
import org.maxkey.authn.SavedRequestAwareAuthenticationSuccessHandler;
+import org.maxkey.authn.support.rememberme.AbstractRemeberMeService;
+import org.maxkey.authn.support.rememberme.InMemoryRemeberMeService;
+import org.maxkey.authn.support.rememberme.JdbcRemeberMeService;
+import org.maxkey.authn.support.rememberme.RedisRemeberMeService;
+import org.maxkey.crypto.keystore.KeyStoreLoader;
import org.maxkey.crypto.password.PasswordReciprocal;
+import org.maxkey.persistence.redis.RedisConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -16,11 +23,16 @@ import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
@Configuration
@PropertySource("classpath:/application.properties")
+@PropertySource("classpath:/config/applicationConfig.properties")
public class ApplicationAutoConfiguration implements InitializingBean {
private static final Logger _logger =
LoggerFactory.getLogger(ApplicationAutoConfiguration.class);
@@ -77,9 +89,85 @@ public class ApplicationAutoConfiguration implements InitializingBean {
}
@Bean(name = "transactionManager")
- DataSourceTransactionManager transactionManager(DataSource dataSource) {
+ public DataSourceTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
+
+ /**
+ * Authentication Password Encoder .
+ * @return
+ */
+ @Bean(name = "passwordEncoder")
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+
+ /**
+ * remeberMeService .
+ * @return
+ */
+ @Bean(name = "remeberMeService")
+ public AbstractRemeberMeService remeberMeService(
+ @Value("${config.server.persistence}") int persistence,
+ @Value("${config.login.remeberme.validity}") int validity,
+ JdbcTemplate jdbcTemplate,
+ RedisConnectionFactory jedisConnectionFactory) {
+ AbstractRemeberMeService remeberMeService = null;
+ if (persistence == 0) {
+ remeberMeService = new InMemoryRemeberMeService();
+ _logger.debug("InMemoryRemeberMeService");
+ } else if (persistence == 1) {
+ remeberMeService = new JdbcRemeberMeService(jdbcTemplate);
+ _logger.debug("JdbcRemeberMeService");
+ } else if (persistence == 2) {
+ remeberMeService = new RedisRemeberMeService(jedisConnectionFactory);
+ _logger.debug("RedisRemeberMeService");
+ }
+ return remeberMeService;
+ }
+
+ /**
+ * keyStoreLoader .
+ * @return
+ */
+ @Bean(name = "keyStoreLoader")
+ public KeyStoreLoader keyStoreLoader(
+ @Value("${config.saml.v20.idp.issuing.entity.id}") String entityName,
+ @Value("${config.saml.v20.idp.keystore.password}") String keystorePassword,
+ @Value("${config.saml.v20.idp.keystore}") Resource keystoreFile) {
+ KeyStoreLoader keyStoreLoader = new KeyStoreLoader();
+ keyStoreLoader.setEntityName(entityName);
+ keyStoreLoader.setKeystorePassword(keystorePassword);
+ keyStoreLoader.setKeystoreFile(keystoreFile);
+ return keyStoreLoader;
+ }
+
+ /**
+ * spKeyStoreLoader .
+ * @return
+ */
+ @Bean(name = "spKeyStoreLoader")
+ public KeyStoreLoader spKeyStoreLoader(
+ @Value("${config.saml.v20.sp.issuing.entity.id}") String entityName,
+ @Value("${config.saml.v20.sp.keystore.password}") String keystorePassword,
+ @Value("${config.saml.v20.sp.keystore}") Resource keystoreFile) {
+ KeyStoreLoader keyStoreLoader = new KeyStoreLoader();
+ keyStoreLoader.setEntityName(entityName);
+ keyStoreLoader.setKeystorePassword(keystorePassword);
+ keyStoreLoader.setKeystoreFile(keystoreFile);
+ return keyStoreLoader;
+ }
+
+ /**
+ * spKeyStoreLoader .
+ * @return
+ */
+ @Bean(name = "spIssuingEntityName")
+ public String spIssuingEntityName(
+ @Value("${config.saml.v20.sp.issuing.entity.id}") String spIssuingEntityName) {
+ return spIssuingEntityName;
+ }
+
@Override
public void afterPropertiesSet() throws Exception {
diff --git a/maxkey-core/src/main/java/org/maxkey/autoconfigure/JwtAuthnAutoConfiguration.java b/maxkey-core/src/main/java/org/maxkey/autoconfigure/JwtAuthnAutoConfiguration.java
new file mode 100644
index 000000000..25be9b359
--- /dev/null
+++ b/maxkey-core/src/main/java/org/maxkey/autoconfigure/JwtAuthnAutoConfiguration.java
@@ -0,0 +1,122 @@
+package org.maxkey.autoconfigure;
+
+import com.nimbusds.jose.JOSEException;
+import com.nimbusds.jose.JWEAlgorithm;
+import java.net.URI;
+import java.security.NoSuchAlgorithmException;
+import java.security.spec.InvalidKeySpecException;
+import org.maxkey.authn.support.jwt.JwtLoginService;
+import org.maxkey.config.oidc.OIDCProviderMetadataDetails;
+import org.maxkey.crypto.jose.keystore.JWKSetKeyStore;
+import org.maxkey.crypto.jwt.encryption.service.impl.DefaultJwtEncryptionAndDecryptionService;
+import org.maxkey.crypto.jwt.signer.service.impl.DefaultJwtSigningAndValidationService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+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.core.io.ClassPathResource;
+
+
+@Configuration
+@PropertySource("classpath:/application.properties")
+@PropertySource("classpath:/config/applicationConfig.properties")
+public class JwtAuthnAutoConfiguration implements InitializingBean {
+ private static final Logger _logger = LoggerFactory.getLogger(JwtAuthnAutoConfiguration.class);
+
+ /**
+ * OIDCProviderMetadataDetails.
+ * Self-issued Provider Metadata
+ * http://openid.net/specs/openid-connect-core-1_0.html#SelfIssued
+ */
+ @Bean(name = "oidcProviderMetadata")
+ public OIDCProviderMetadataDetails OIDCProviderMetadataDetails(
+ @Value("${config.oidc.metadata.issuer}")
+ String issuer,
+ @Value("${config.oidc.metadata.authorizationEndpoint}")
+ URI authorizationEndpoint,
+ @Value("${config.oidc.metadata.tokenEndpoint}")
+ URI tokenEndpoint,
+ @Value("${config.oidc.metadata.userinfoEndpoint}")
+ URI userinfoEndpoint) {
+ _logger.debug("RedisConnectionFactory init .");
+ OIDCProviderMetadataDetails oidcProviderMetadata = new OIDCProviderMetadataDetails();
+ oidcProviderMetadata.setIssuer(issuer);
+ oidcProviderMetadata.setAuthorizationEndpoint(authorizationEndpoint);
+ oidcProviderMetadata.setTokenEndpoint(tokenEndpoint);
+ oidcProviderMetadata.setUserinfoEndpoint(userinfoEndpoint);
+ return oidcProviderMetadata;
+ }
+
+ /**
+ * jwtSetKeyStore.
+ * @return
+ */
+ @Bean(name = "jwkSetKeyStore")
+ public JWKSetKeyStore jwtSetKeyStore() {
+ JWKSetKeyStore jwkSetKeyStore = new JWKSetKeyStore();
+ ClassPathResource classPathResource = new ClassPathResource("/config/keystore.jwks");
+ jwkSetKeyStore.setLocation(classPathResource);
+ return jwkSetKeyStore;
+ }
+
+ /**
+ * jwtSetKeyStore.
+ * @return
+ * @throws JOSEException
+ * @throws InvalidKeySpecException
+ * @throws NoSuchAlgorithmException
+ */
+ @Bean(name = "jwtSignerValidationService")
+ public DefaultJwtSigningAndValidationService jwtSignerValidationService(
+ JWKSetKeyStore jwtSetKeyStore)
+ throws NoSuchAlgorithmException, InvalidKeySpecException, JOSEException {
+ DefaultJwtSigningAndValidationService jwtSignerValidationService =
+ new DefaultJwtSigningAndValidationService(jwtSetKeyStore);
+ jwtSignerValidationService.setDefaultSignerKeyId("maxkey_rsa");
+ jwtSignerValidationService.setDefaultSigningAlgorithmName("RS256");
+ return jwtSignerValidationService;
+ }
+
+ /**
+ * jwtSetKeyStore.
+ * @return
+ * @throws JOSEException
+ * @throws InvalidKeySpecException
+ * @throws NoSuchAlgorithmException
+ */
+ @Bean(name = "jwtEncryptionService")
+ public DefaultJwtEncryptionAndDecryptionService jwtEncryptionService(
+ JWKSetKeyStore jwtSetKeyStore)
+ throws NoSuchAlgorithmException, InvalidKeySpecException, JOSEException {
+ DefaultJwtEncryptionAndDecryptionService jwtEncryptionService =
+ new DefaultJwtEncryptionAndDecryptionService(jwtSetKeyStore);
+ jwtEncryptionService.setDefaultAlgorithm(JWEAlgorithm.RSA1_5);//RSA1_5
+ jwtEncryptionService.setDefaultDecryptionKeyId("maxkey_rsa");
+ jwtEncryptionService.setDefaultEncryptionKeyId("maxkey_rsa");
+ return jwtEncryptionService;
+ }
+
+ /**
+ * JwtLoginService.
+ * @return
+ */
+ @Bean(name = "jwtLoginService")
+ public JwtLoginService jwtLoginService(
+ DefaultJwtSigningAndValidationService jwtSignerValidationService,
+ OIDCProviderMetadataDetails oidcProviderMetadata) {
+ JwtLoginService jwkSetKeyStore = new JwtLoginService();
+ jwkSetKeyStore.setJwtSignerValidationService(jwtSignerValidationService);
+ jwkSetKeyStore.setJwtProviderMetadata(oidcProviderMetadata);
+ return jwkSetKeyStore;
+ }
+
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+}
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 f1cf63d6d..08adc90a7 100644
--- a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java
+++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtApplication.java
@@ -3,6 +3,7 @@ package org.maxkey;
import java.util.Date;
import javax.servlet.ServletException;
import org.maxkey.web.InitializeContext;
+import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
@@ -16,9 +17,22 @@ import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@ImportResource(locations={"classpath:spring/maxkey-mgt.xml"})
@ComponentScan(basePackages = {
- "org.maxkey.MaxKeyMgtConfig"
+ "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"
}
)
+@MapperScan("org.maxkey.dao.persistence,")
public class MaxKeyMgtApplication extends SpringBootServletInitializer {
private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtApplication.class);
@@ -28,7 +42,6 @@ public class MaxKeyMgtApplication extends SpringBootServletInitializer {
ConfigurableApplicationContext applicationContext =SpringApplication.run(MaxKeyMgtApplication.class, args);
InitializeContext initWebContext=new InitializeContext(applicationContext);
-
try {
initWebContext.init(null);
} catch (ServletException e) {
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 c8d49514b..5983a964e 100644
--- a/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java
+++ b/maxkey-web-manage/src/main/java/org/maxkey/MaxKeyMgtConfig.java
@@ -1,16 +1,19 @@
package org.maxkey;
-import org.mybatis.spring.annotation.MapperScan;
+import javax.sql.DataSource;
+import org.maxkey.authz.oauth2.provider.client.JdbcClientDetailsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
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.security.crypto.password.PasswordEncoder;
@Configuration
@PropertySource("classpath:/application.properties")
-@MapperScan("org.maxkey.dao.persistence,")
-public class MaxKeyMgtConfig {
+public class MaxKeyMgtConfig implements InitializingBean {
private static final Logger _logger = LoggerFactory.getLogger(MaxKeyMgtConfig.class);
@Value("${server.port:8080}")
@@ -23,5 +26,19 @@ public class MaxKeyMgtConfig {
public void setPort(int port) {
this.port = port;
}
+
+ @Bean(name = "oauth20JdbcClientDetailsService")
+ public JdbcClientDetailsService JdbcClientDetailsService(
+ DataSource dataSource,PasswordEncoder passwordReciprocal) {
+ JdbcClientDetailsService clientDetailsService = new JdbcClientDetailsService(dataSource);
+ clientDetailsService.setPasswordEncoder(passwordReciprocal);
+ return clientDetailsService;
+ }
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ // TODO Auto-generated method stub
+
+ }
}
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 d73316fea..99a285239 100644
--- a/maxkey-web-manage/src/main/resources/META-INF/spring.factories
+++ b/maxkey-web-manage/src/main/resources/META-INF/spring.factories
@@ -3,4 +3,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.maxkey.autoconfigure.ApplicationAutoConfiguration,\
org.maxkey.autoconfigure.KaptchaAutoConfiguration,\
org.maxkey.autoconfigure.MvcAutoConfiguration,\
+org.maxkey.autoconfigure.JwtAuthnAutoConfiguration,\
+org.maxkey.autoconfigure.RedisAutoConfiguration,\
org.maxkey.MaxKeyMgtConfig
diff --git a/maxkey-web-manage/src/main/resources/application.properties b/maxkey-web-manage/src/main/resources/application.properties
index 856c6060d..a64ce7d25 100644
--- a/maxkey-web-manage/src/main/resources/application.properties
+++ b/maxkey-web-manage/src/main/resources/application.properties
@@ -24,6 +24,15 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#mybatis
mybatis.type-aliases-package=org.maxkey.domain,org.maxkey.domain.apps,
mybatis.mapper-locations=classpath*:/org/maxkey/dao/persistence/xml/mysql/*.xml
+#redis
+spring.redis.host=127.0.0.1
+spring.redis.port=6379
+spring.redis.password=password
+spring.redis.timeout=10000
+spring.redis.jedis.pool.max-wait=1000
+spring.redis.jedis.pool.max-idle=200
+spring.redis.lettuce.pool.max-active=-1
+spring.redis.lettuce.pool.min-idle=0
#mail
spring.mail.default-encoding=utf-8
spring.mail.host=smtp.163.com
diff --git a/maxkey-web-manage/src/main/resources/config/applicationConfig.properties b/maxkey-web-manage/src/main/resources/config/applicationConfig.properties
index 8a13ccc1d..62108f6ee 100644
--- a/maxkey-web-manage/src/main/resources/config/applicationConfig.properties
+++ b/maxkey-web-manage/src/main/resources/config/applicationConfig.properties
@@ -9,6 +9,8 @@ config.server.prefix.uri=${config.server.name}:9521/maxkey-mgt
#default.uri
config.server.default.uri=${config.server.prefix.uri}/main
config.maxkey.uri=${config.server.name}/maxkey
+#InMemory 0 , jdbc 1, Redis 2
+config.server.persistence=0
############################################################################
# Login configuration
#enable captcha
@@ -26,7 +28,7 @@ config.login.wsfederation=false
#remeberme
config.login.remeberme=false
#validity
-config.login.remeberme.validity=
+config.login.remeberme.validity=0
#default.uri
#to appList page
config.login.default.uri=appList
diff --git a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml
deleted file mode 100644
index b6d850a34..000000000
--- a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-security.xml
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-task.xml b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-task.xml
deleted file mode 100644
index 00fda6dca..000000000
--- a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt-task.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
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 a24d596c8..73b1d1940 100644
--- a/maxkey-web-manage/src/main/resources/spring/maxkey-mgt.xml
+++ b/maxkey-web-manage/src/main/resources/spring/maxkey-mgt.xml
@@ -19,58 +19,94 @@
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyConfig.java b/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyConfig.java
index b2dfafdfc..8096349e6 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyConfig.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyConfig.java
@@ -9,20 +9,34 @@ import org.maxkey.crypto.password.opt.algorithm.KeyUriFormat;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
+
+
+
@Configuration
@ImportResource(locations = { "classpath:spring/maxkey.xml" })
@PropertySource("classpath:/application.properties")
@PropertySource("classpath:/config/applicationConfig.properties")
@MapperScan("org.maxkey.dao.persistence,")
-public class MaxKeyConfig {
+@ComponentScan(basePackages = {
+ "org.maxkey.config",
+ "org.maxkey.domain",
+ "org.maxkey.domain.apps",
+ "org.maxkey.domain.userinfo",
+ "org.maxkey.api.v1.contorller",
+ "org.maxkey.web.endpoint",
+ "org.maxkey.web.contorller"
+})
+public class MaxKeyConfig implements InitializingBean {
private static final Logger _logger = LoggerFactory.getLogger(MaxKeyConfig.class);
@Value("${server.port:8080}")
@@ -94,6 +108,12 @@ public class MaxKeyConfig {
return keyUriFormat;
}
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
}
diff --git a/maxkey-web-maxkey/src/main/resources/config/applicationConfig.properties b/maxkey-web-maxkey/src/main/resources/config/applicationConfig.properties
index 518835fa4..06635e884 100644
--- a/maxkey-web-maxkey/src/main/resources/config/applicationConfig.properties
+++ b/maxkey-web-maxkey/src/main/resources/config/applicationConfig.properties
@@ -9,7 +9,8 @@ config.server.prefix.uri=${config.server.name}/maxkey
#default.uri
config.server.default.uri=${config.server.prefix.uri}/maxkey/appList
config.server.management.uri=${config.server.name}:9521/maxkey-mgt/login
-
+#InMemory 0 , jdbc 1, Redis 2
+config.server.persistence=0
config.app.issuer=CN=ConSec,CN=COM,CN=SH
############################################################################
# Login configuration
@@ -28,7 +29,7 @@ config.login.wsfederation=false
#remeberme
config.login.remeberme=true
#validity
-config.login.remeberme.validity=
+config.login.remeberme.validity=0
#to default application web site
config.login.default.uri=appList
diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey-protocol.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey-protocol.xml
deleted file mode 100644
index 278cec825..000000000
--- a/maxkey-web-maxkey/src/main/resources/spring/maxkey-protocol.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml
deleted file mode 100644
index 5ec5316d1..000000000
--- a/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey-support.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey-support.xml
deleted file mode 100644
index 07bcd79d7..000000000
--- a/maxkey-web-maxkey/src/main/resources/spring/maxkey-support.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey-task.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey-task.xml
deleted file mode 100644
index 6f2156b40..000000000
--- a/maxkey-web-maxkey/src/main/resources/spring/maxkey-task.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml
index e723a020f..8c10bd086 100644
--- a/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml
+++ b/maxkey-web-maxkey/src/main/resources/spring/maxkey.xml
@@ -17,28 +17,151 @@
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file