<#if 3 == passwordResetResult>
<@locale code="forgotpassword.pwdreseted.password"/>
-
<@locale code="forgotpassword.backstep"/>
+
<@locale code="forgotpassword.backstep"/>
+
${validate_result}
#if>
<#if 2 == passwordResetResult>
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties b/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties
new file mode 100644
index 000000000..c13653cc6
--- /dev/null
+++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/application-http.properties
@@ -0,0 +1,233 @@
+############################################################################
+# Copyright [2021] [MaxKey of copyright http://www.maxkey.top]
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+############################################################################
+#MaxKey Server configuration #
+############################################################################
+#server port
+server.port=9527
+#web app context path
+server.servlet.context-path=/maxkey-mgt
+spring.servlet.multipart.enabled=true
+spring.servlet.multipart.max-file-size=4194304
+#server.servlet.encoding.charset.from=
+#server.servlet.encoding.charset=
+#server.servlet.encoding.enabled=
+#server.servlet.encoding.force=
+
+############################################################################
+#database configuration
+# supported database
+# mysql
+# highgo
+# postgresql
+############################################################################
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+#mysql
+spring.datasource.username=root
+spring.datasource.password=maxkey
+spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+#highgo
+#spring.datasource.username=highgo
+#spring.datasource.password=High@123
+#spring.datasource.url=jdbc:highgo://192.168.56.107:5866/highgo?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=com.highgo.jdbc.Driver
+#postgresql
+#spring.datasource.username=root
+#spring.datasource.password=maxkey!
+#spring.datasource.url=jdbc:postgresql://localhost/maxkey?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+#spring.datasource.driver-class-name=org.postgresql.Driver
+
+#mybatis
+mybatis.dialect=mysql
+mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps,
+mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml
+mybatis.table-column-snowflake-datacenter-id=1
+mybatis.table-column-snowflake-machine-id=1
+mybatis.table-column-escape=false
+mybatis.table-column-case=lowercase
+
+############################################################################
+#redis server configuration #
+############################################################################
+#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 configuration #
+############################################################################
+#spring.mail.default-encoding=utf-8
+#spring.mail.host=smtp.163.com
+#spring.mail.port=465
+#spring.mail.username=maxkey@163.com
+#spring.mail.password=password
+#spring.mail.protocol=smtp
+#spring.mail.properties.ssl=true
+#spring.mail.properties.sender=maxkey@163.com
+
+############################################################################
+#freemarker configuration #
+############################################################################
+spring.freemarker.template-loader-path=classpath:/templates/views
+spring.freemarker.cache=false
+spring.freemarker.charset=UTF-8
+spring.freemarker.check-template-location=true
+spring.freemarker.content-type=text/html
+spring.freemarker.expose-request-attributes=false
+spring.freemarker.expose-session-attributes=false
+spring.freemarker.request-context-attribute=request
+spring.freemarker.suffix=.ftl
+#spring.freemarker.settings.classic_compatible=true
+
+############################################################################
+#static resources configuration #
+############################################################################
+spring.mvc.static-path-pattern=/static/**
+spring.messages.basename=classpath:messages/message
+spring.messages.encoding=UTF-8
+
+############################################################################
+#Main.banner-mode configuration #
+############################################################################
+spring.main.banner-mode=log
+spring.main.allow-bean-definition-overriding=true
+
+############################################################################
+#Spring Session configuration #
+############################################################################
+#Session store type.
+spring.session.store-type=none
+#spring.session.store-type=redis
+# Session timeout. If a duration suffix is not specified, seconds is used.
+#server.servlet.session.timeout=1800
+# Sessions flush mode.
+#spring.session.redis.flush-mode=on_save
+# Namespace for keys used to store sessions.
+#spring.session.redis.namespace=spring:session
+
+############################################################################
+#Kafka for connectors configuration #
+############################################################################
+spring.kafka.bootstrap-servers=localhost:9092
+# retries
+spring.kafka.producer.retries=0
+# acks
+spring.kafka.producer.acks=1
+# batch-size
+spring.kafka.producer.batch-size=16384
+# linger.ms
+spring.kafka.producer.properties.linger.ms=0
+# buffer-memory
+spring.kafka.producer.buffer-memory = 33554432
+# serializer
+spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
+spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
+# partitioner
+# spring.kafka.producer.properties.partitioner.class=com.felix.kafka.producer.CustomizePartitioner
+
+############################################################################
+#Management endpoints configuration #
+############################################################################
+#management.server.port=9522
+#management.server.servlet.context-path=/maxkey-mgt-actuate
+#management.endpoints.enabled-by-default=false
+management.security.enabled=false
+#management.endpoints.jmx.exposure.include=health,info
+management.endpoints.web.exposure.include=metrics,health,info,env,beans
+
+############################################################################
+#domain name configuration #
+############################################################################
+maxkey.server.scheme=http
+maxkey.server.basedomain=maxkey.top
+maxkey.server.domain=sso.${maxkey.server.basedomain}
+maxkey.server.name=${maxkey.server.scheme}://${maxkey.server.domain}
+maxkey.server.uri=${maxkey.server.name}:9527/maxkey-mgt
+#default.uri
+maxkey.server.default.uri=${maxkey.server.uri}/main
+maxkey.maxkey.uri=https://${maxkey.server.domain}/maxkey
+#InMemory 0 , Redis 2
+maxkey.server.persistence=0
+#identity
+maxkey.identity.kafkasupport=false
+
+############################################################################
+#Login configuration #
+############################################################################
+#enable captcha
+maxkey.login.captcha=true
+#text or arithmetic
+maxkey.login.captcha.type=text
+#enable two factor,use one time password
+maxkey.login.mfa=false
+#enable social sign on
+maxkey.login.socialsignon=false
+#Enable kerberos/SPNEGO
+maxkey.login.kerberos=false
+#wsFederation
+maxkey.login.wsfederation=false
+#remeberme
+maxkey.login.remeberme=false
+#validity
+maxkey.login.remeberme.validity=0
+#default.uri
+#to appList page
+maxkey.login.default.uri=appList
+#ipaddress whitelist
+maxkey.ipaddress.whitelist=false
+
+#############################################################################
+#SAML V2.0 configuration #
+#############################################################################
+# saml common
+maxkey.saml.v20.max.parser.pool.size=2
+maxkey.saml.v20.assertion.validity.time.ins.seconds=90
+maxkey.saml.v20.replay.cache.life.in.millis=14400000
+maxkey.saml.v20.issue.instant.check.clock.skew.in.seconds=90
+maxkey.saml.v20.issue.instant.check.validity.time.in.seconds=300
+#saml idp keystore
+maxkey.saml.v20.idp.keystore.password=maxkey
+maxkey.saml.v20.idp.keystore.private.key.password=maxkey
+maxkey.saml.v20.idp.keystore=classpath\:config/samlServerKeystore.jks
+#keystore id for sec
+maxkey.saml.v20.idp.issuing.entity.id=maxkey.top
+maxkey.saml.v20.idp.issuer=https://sso.maxkey.top/maxkey/saml
+maxkey.saml.v20.idp.receiver.endpoint=https\://sso.maxkey.top/
+#saml sp keystore
+maxkey.saml.v20.sp.keystore.password=maxkey
+maxkey.saml.v20.sp.keystore.private.key.password=maxkey
+maxkey.saml.v20.sp.keystore=classpath\:config/samlClientKeystore.jks
+maxkey.saml.v20.sp.issuing.entity.id=client.maxkey.org
+
+#############################################################################
+#OIDC V1.0 METADATA configuration #
+#############################################################################
+maxkey.oidc.metadata.issuer=https://${maxkey.server.domain}/maxkey
+maxkey.oidc.metadata.authorizationEndpoint=${maxkey.server.name}/maxkey/authz/oauth/v20/authorize
+maxkey.oidc.metadata.tokenEndpoint=${maxkey.server.name}/maxkey/authz/oauth/v20/token
+maxkey.oidc.metadata.userinfoEndpoint=${maxkey.server.name}/maxkey/api/connect/userinfo
+
+#############################################################################
+#Job Scheduler #
+#############################################################################
+#one hour for refresh dynamic groups
+maxkey.job.cron.dynamicgroups=0 0 0/1 * * ?
+maxkey.job.cron.enable=true
diff --git a/maxkey-webs/maxkey-web-mgt/src/main/resources/application.properties b/maxkey-webs/maxkey-web-mgt/src/main/resources/application.properties
index 3a2b6961c..9da6a96f1 100644
--- a/maxkey-webs/maxkey-web-mgt/src/main/resources/application.properties
+++ b/maxkey-webs/maxkey-web-mgt/src/main/resources/application.properties
@@ -20,225 +20,6 @@ application.name=MaxKey-Mgt
application.formatted-version=v2.8.2 GA
############################################################################
-#MaxKey Server configuration #
+#spring.profiles.active http; default http #
############################################################################
-#server port
-server.port=9527
-#web app context path
-server.servlet.context-path=/maxkey-mgt
-spring.servlet.multipart.enabled=true
-spring.servlet.multipart.max-file-size=4194304
-#server.servlet.encoding.charset.from=
-#server.servlet.encoding.charset=
-#server.servlet.encoding.enabled=
-#server.servlet.encoding.force=
-
-############################################################################
-#database configuration
-# supported database
-# mysql
-# highgo
-# postgresql
-############################################################################
-spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
-#mysql
-spring.datasource.username=root
-spring.datasource.password=maxkey
-spring.datasource.url=jdbc:mysql://localhost/maxkey?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-#highgo
-#spring.datasource.username=highgo
-#spring.datasource.password=High@123
-#spring.datasource.url=jdbc:highgo://192.168.56.107:5866/highgo?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-#spring.datasource.driver-class-name=com.highgo.jdbc.Driver
-#postgresql
-#spring.datasource.username=root
-#spring.datasource.password=maxkey!
-#spring.datasource.url=jdbc:postgresql://localhost/maxkey?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-#spring.datasource.driver-class-name=org.postgresql.Driver
-
-#mybatis
-mybatis.dialect=mysql
-mybatis.type-aliases-package=org.maxkey.entity,org.maxkey.entity.apps,
-mybatis.mapper-locations=classpath*:/org/maxkey/persistence/mapper/xml/${mybatis.dialect}/*.xml
-mybatis.table-column-snowflake-datacenter-id=1
-mybatis.table-column-snowflake-machine-id=1
-mybatis.table-column-escape=false
-mybatis.table-column-case=lowercase
-
-############################################################################
-#redis server configuration #
-############################################################################
-#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 configuration #
-############################################################################
-#spring.mail.default-encoding=utf-8
-#spring.mail.host=smtp.163.com
-#spring.mail.port=465
-#spring.mail.username=maxkey@163.com
-#spring.mail.password=password
-#spring.mail.protocol=smtp
-#spring.mail.properties.ssl=true
-#spring.mail.properties.sender=maxkey@163.com
-
-############################################################################
-#freemarker configuration #
-############################################################################
-spring.freemarker.template-loader-path=classpath:/templates/views
-spring.freemarker.cache=false
-spring.freemarker.charset=UTF-8
-spring.freemarker.check-template-location=true
-spring.freemarker.content-type=text/html
-spring.freemarker.expose-request-attributes=false
-spring.freemarker.expose-session-attributes=false
-spring.freemarker.request-context-attribute=request
-spring.freemarker.suffix=.ftl
-#spring.freemarker.settings.classic_compatible=true
-
-############################################################################
-#static resources configuration #
-############################################################################
-spring.mvc.static-path-pattern=/static/**
-spring.messages.basename=classpath:messages/message
-spring.messages.encoding=UTF-8
-
-############################################################################
-#Main.banner-mode configuration #
-############################################################################
-spring.main.banner-mode=log
-spring.main.allow-bean-definition-overriding=true
-
-############################################################################
-#Spring Session configuration #
-############################################################################
-#Session store type.
-spring.session.store-type=none
-#spring.session.store-type=redis
-# Session timeout. If a duration suffix is not specified, seconds is used.
-#server.servlet.session.timeout=1800
-# Sessions flush mode.
-#spring.session.redis.flush-mode=on_save
-# Namespace for keys used to store sessions.
-#spring.session.redis.namespace=spring:session
-
-############################################################################
-#Kafka for connectors configuration #
-############################################################################
-spring.kafka.bootstrap-servers=localhost:9092
-###########\u3010\u521d\u59cb\u5316\u751f\u4ea7\u8005\u914d\u7f6e\u3011###########
-# \u91cd\u8bd5\u6b21\u6570
-spring.kafka.producer.retries=0
-# \u5e94\u7b54\u7ea7\u522b:\u591a\u5c11\u4e2a\u5206\u533a\u526f\u672c\u5907\u4efd\u5b8c\u6210\u65f6\u5411\u751f\u4ea7\u8005\u53d1\u9001ack\u786e\u8ba4(\u53ef\u90090\u30011\u3001all/-1)
-spring.kafka.producer.acks=1
-# \u6279\u91cf\u5927\u5c0f
-spring.kafka.producer.batch-size=16384
-# \u63d0\u4ea4\u5ef6\u65f6
-spring.kafka.producer.properties.linger.ms=0
-# \u5f53\u751f\u4ea7\u7aef\u79ef\u7d2f\u7684\u6d88\u606f\u8fbe\u5230batch-size\u6216\u63a5\u6536\u5230\u6d88\u606flinger.ms\u540e,\u751f\u4ea7\u8005\u5c31\u4f1a\u5c06\u6d88\u606f\u63d0\u4ea4\u7ed9kafka
-# linger.ms\u4e3a0\u8868\u793a\u6bcf\u63a5\u6536\u5230\u4e00\u6761\u6d88\u606f\u5c31\u63d0\u4ea4\u7ed9kafka,\u8fd9\u65f6\u5019batch-size\u5176\u5b9e\u5c31\u6ca1\u7528\u4e86
-
-# \u751f\u4ea7\u7aef\u7f13\u51b2\u533a\u5927\u5c0f
-spring.kafka.producer.buffer-memory = 33554432
-# Kafka\u63d0\u4f9b\u7684\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7c7b
-spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
-spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
-# \u81ea\u5b9a\u4e49\u5206\u533a\u5668
-# spring.kafka.producer.properties.partitioner.class=com.felix.kafka.producer.CustomizePartitioner
-
-############################################################################
-#Management endpoints configuration #
-############################################################################
-#management.server.port=9522
-#management.server.servlet.context-path=/maxkey-mgt-actuate
-#management.endpoints.enabled-by-default=false
-management.security.enabled=false
-#management.endpoints.jmx.exposure.include=health,info
-management.endpoints.web.exposure.include=metrics,health,info,env,beans
-
-############################################################################
-#domain name configuration #
-############################################################################
-maxkey.server.scheme=http
-maxkey.server.basedomain=maxkey.top
-maxkey.server.domain=sso.${maxkey.server.basedomain}
-maxkey.server.name=${maxkey.server.scheme}://${maxkey.server.domain}
-maxkey.server.uri=${maxkey.server.name}:9527/maxkey-mgt
-#default.uri
-maxkey.server.default.uri=${maxkey.server.uri}/main
-maxkey.maxkey.uri=https://${maxkey.server.domain}/maxkey
-#InMemory 0 , Redis 2
-maxkey.server.persistence=0
-#identity
-maxkey.identity.kafkasupport=false
-
-############################################################################
-#Login configuration #
-############################################################################
-#enable captcha
-maxkey.login.captcha=true
-#text or arithmetic
-maxkey.login.captcha.type=text
-#enable two factor,use one time password
-maxkey.login.mfa=false
-#enable social sign on
-maxkey.login.socialsignon=false
-#Enable kerberos/SPNEGO
-maxkey.login.kerberos=false
-#wsFederation
-maxkey.login.wsfederation=false
-#remeberme
-maxkey.login.remeberme=false
-#validity
-maxkey.login.remeberme.validity=0
-#default.uri
-#to appList page
-maxkey.login.default.uri=appList
-#ipaddress whitelist
-maxkey.ipaddress.whitelist=false
-
-#############################################################################
-#SAML V2.0 configuration #
-#############################################################################
-# saml common
-maxkey.saml.v20.max.parser.pool.size=2
-maxkey.saml.v20.assertion.validity.time.ins.seconds=90
-maxkey.saml.v20.replay.cache.life.in.millis=14400000
-maxkey.saml.v20.issue.instant.check.clock.skew.in.seconds=90
-maxkey.saml.v20.issue.instant.check.validity.time.in.seconds=300
-#saml idp keystore
-maxkey.saml.v20.idp.keystore.password=maxkey
-maxkey.saml.v20.idp.keystore.private.key.password=maxkey
-maxkey.saml.v20.idp.keystore=classpath\:config/samlServerKeystore.jks
-#keystore id for sec
-maxkey.saml.v20.idp.issuing.entity.id=maxkey.top
-maxkey.saml.v20.idp.issuer=https://sso.maxkey.top/maxkey/saml
-maxkey.saml.v20.idp.receiver.endpoint=https\://sso.maxkey.top/
-#saml sp keystore
-maxkey.saml.v20.sp.keystore.password=maxkey
-maxkey.saml.v20.sp.keystore.private.key.password=maxkey
-maxkey.saml.v20.sp.keystore=classpath\:config/samlClientKeystore.jks
-maxkey.saml.v20.sp.issuing.entity.id=client.maxkey.org
-
-#############################################################################
-#OIDC V1.0 METADATA configuration #
-#############################################################################
-maxkey.oidc.metadata.issuer=https://${maxkey.server.domain}/maxkey
-maxkey.oidc.metadata.authorizationEndpoint=${maxkey.server.name}/maxkey/authz/oauth/v20/authorize
-maxkey.oidc.metadata.tokenEndpoint=${maxkey.server.name}/maxkey/authz/oauth/v20/token
-maxkey.oidc.metadata.userinfoEndpoint=${maxkey.server.name}/maxkey/api/connect/userinfo
-
-#############################################################################
-#Job Scheduler #
-#############################################################################
-#one hour for refresh dynamic groups
-maxkey.job.cron.dynamicgroups=0 0 0/1 * * ?
-
+spring.profiles.active=http