diff --git a/.checkstyle b/.checkstyle
new file mode 100644
index 000000000..19a2e7322
--- /dev/null
+++ b/.checkstyle
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.project b/.project
index 43c2d7c6c..bafb8e17e 100644
--- a/.project
+++ b/.project
@@ -15,9 +15,15 @@
+
+ net.sf.eclipsecs.core.CheckstyleBuilder
+
+
+
org.eclipse.jdt.core.javanature
org.eclipse.buildship.core.gradleprojectnature
+ net.sf.eclipsecs.core.CheckstyleNature
diff --git a/maxkey-core/.classpath b/maxkey-core/.classpath
index b79fc0c54..7f272a8f1 100644
--- a/maxkey-core/.classpath
+++ b/maxkey-core/.classpath
@@ -1,18 +1,22 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
diff --git a/maxkey-core/.project b/maxkey-core/.project
index 93a298908..24565aead 100644
--- a/maxkey-core/.project
+++ b/maxkey-core/.project
@@ -25,11 +25,17 @@
+
+ net.sf.eclipsecs.core.CheckstyleBuilder
+
+
+
org.eclipse.jdt.core.javanature
org.eclipse.buildship.core.gradleprojectnature
org.eclipse.wst.common.project.facet.core.nature
org.eclipse.wst.common.modulecore.ModuleCoreNature
+ net.sf.eclipsecs.core.CheckstyleNature
diff --git a/maxkey-core/.settings/org.eclipse.wst.common.component b/maxkey-core/.settings/org.eclipse.wst.common.component
index 60a439619..458539508 100644
--- a/maxkey-core/.settings/org.eclipse.wst.common.component
+++ b/maxkey-core/.settings/org.eclipse.wst.common.component
@@ -1,6 +1,8 @@
-
-
-
-
-
+
+
+
+
+
+
diff --git a/maxkey-core/.settings/org.eclipse.wst.common.project.facet.core.xml b/maxkey-core/.settings/org.eclipse.wst.common.project.facet.core.xml
index fd0227a68..9f02bd9f9 100644
--- a/maxkey-core/.settings/org.eclipse.wst.common.project.facet.core.xml
+++ b/maxkey-core/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
diff --git a/maxkey-core/.sts4-cache/classpath-data.json b/maxkey-core/.sts4-cache/classpath-data.json
index aec228e39..1a1827ae0 100644
--- a/maxkey-core/.sts4-cache/classpath-data.json
+++ b/maxkey-core/.sts4-cache/classpath-data.json
@@ -1 +1,1270 @@
-{"name":"maxkey-core","classpathEntries":[{"kind":"binary","path":"C:\\Program Files\\Java\\jre1.8.0_221\\lib\\resources.jar","javadocContainerUrl":"https://docs.oracle.com/javase/1/docs/api/","isSystem":true,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Program Files\\Java\\jre1.8.0_221\\lib\\rt.jar","javadocContainerUrl":"https://docs.oracle.com/javase/1/docs/api/","isSystem":true,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Program Files\\Java\\jre1.8.0_221\\lib\\jsse.jar","javadocContainerUrl":"https://docs.oracle.com/javase/1/docs/api/","isSystem":true,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Program Files\\Java\\jre1.8.0_221\\lib\\jce.jar","javadocContainerUrl":"https://docs.oracle.com/javase/1/docs/api/","isSystem":true,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Program Files\\Java\\jre1.8.0_221\\lib\\charsets.jar","javadocContainerUrl":"https://docs.oracle.com/javase/1/docs/api/","isSystem":true,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Program Files\\Java\\jre1.8.0_221\\lib\\jfr.jar","javadocContainerUrl":"https://docs.oracle.com/javase/1/docs/api/","isSystem":true,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-beanutils\\commons-beanutils\\1.9.3\\c845703de334ddc6b4b3cd26835458cb1cba1f3d\\commons-beanutils-1.9.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-codec\\commons-codec\\1.12\\47a28ef1ed31eb182b44e15d49300dee5fadcf6a\\commons-codec-1.12.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\commons-collections\\commons-collections\\3.2.2\\commons-collections-3.2.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-csv\\1.7\\cb5d05520f8fe1b409aaf29962e47dc5764f8f39\\commons-csv-1.7.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-dbcp2\\2.6.0\\78d0e99c4bc815a9f20cf6837761e91b7fc6eef4\\commons-dbcp2-2.6.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-dbutils\\commons-dbutils\\1.7\\a2d6e515aa87e5d38f6b3003e70b13c1b1f19ca0\\commons-dbutils-1.7.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-digester3\\3.2\\c3f68c5ff25ec5204470fd8fdf4cb8feff5e8a79\\commons-digester3-3.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-digester\\commons-digester\\2.1\\73a8001e7a54a255eef0f03521ec1805dc738ca0\\commons-digester-2.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-io\\commons-io\\2.6\\815893df5f31da2ece4040fe0a12fd44b577afaf\\commons-io-2.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-lang\\commons-lang\\2.6\\ce1edb914c94ebc388f086c6827e8bdeec71ac2\\commons-lang-2.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-lang3\\3.9\\122c7cee69b53ed4a7681c03d4ee4c0e2765da5\\commons-lang3-3.9.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\commons-logging\\commons-logging\\1.2\\commons-logging-1.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-pool2\\2.6.2\\775a8072995b29eafe8fb0a828a190589f71cede\\commons-pool2-2.6.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\commons-httpclient\\commons-httpclient\\3.1\\commons-httpclient-3.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-fileupload\\commons-fileupload\\1.4\\f95188e3d372e20e7328706c37ef366e5d7859b0\\commons-fileupload-1.4.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-email\\1.5\\e8e677c6362eba14ff3c476ba63ccb83132dbd52\\commons-email-1.5.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpclient\\4.5.6\\1afe5621985efe90a92d0fbc9be86271efbe796f\\httpclient-4.5.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\fluent-hc\\4.5.6\\7f4b2ccd83078e3bb87c8ad280ec074c04c7e4a4\\fluent-hc-4.5.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpclient-cache\\4.5.6\\4238cd34156021eaadc7e4d2d5c47b835e1fed3c\\httpclient-cache-4.5.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpmime\\4.5.6\\164343da11db817e81e24e0d9869527e069850c9\\httpmime-4.5.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpcore\\4.4.10\\acc54d9b28bdffe4bbde89ed2e4a1e86b5285e2b\\httpcore-4.4.10.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\org\\apache\\velocity\\velocity\\1.7\\velocity-1.7.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\velocity\\velocity-dep\\1.4\\b1df5193d3dd66a310b32828c547cd9e163b98df\\velocity-dep-1.4.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.freemarker\\freemarker\\2.3.29\\46005eeee02e4458520c85d0bcf5001467b053c3\\freemarker-2.3.29.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\not-yet-commons-ssl\\0.3.9\\7548f1f49b8a0b808b8715ead7b3cb2d395b0909\\not-yet-commons-ssl-0.3.9.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-1.2-api\\2.12.0\\29474790d2292384eac2ecf1b3280f095b6ac3f1\\log4j-1.2-api-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-api\\2.12.0\\8b50b487ac0c0bff1af79d56c6454ea68f40c150\\log4j-api-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-core\\2.12.0\\1723837573e4c5dbc8840f9f6e8f79b245b94bb\\log4j-core-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-jcl\\2.12.0\\c6b6cc2594e6481d1a8cf5762ed67bcab004363e\\log4j-jcl-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-jul\\2.12.0\\d50c2eb436de7128393c1fa1b71596c12462eb88\\log4j-jul-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-slf4j-impl\\2.12.0\\7f44f5201f79d6f7010a1515699a5f6c40e49cb\\log4j-slf4j-impl-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-web\\2.12.0\\93c550519d057e56c75ba5074ea4a258d1732b8b\\log4j-web-2.12.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\org\\slf4j\\slf4j-api\\1.7.26\\slf4j-api-1.7.26.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.jboss.logging\\jboss-logging\\3.4.0.Final\\b225692a59f7dc3a789d2c85edc06041914e97e7\\jboss-logging-3.4.0.Final.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-aop\\5.2.2.RELEASE\\899739cf7f338f6297aa9eb25ea8b16338fe4e6d\\spring-aop-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-aspects\\5.2.2.RELEASE\\a7fc38ee5fcc7efff607cc93b5fa7259c0fbb4da\\spring-aspects-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-beans\\5.2.2.RELEASE\\81e4d9cc2e8fac88ab4eb7325c4521bd07c6389c\\spring-beans-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-core\\5.2.2.RELEASE\\bfcf2f6d0494d89db63ae170b8491223c93a88dc\\spring-core-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-context\\5.2.2.RELEASE\\a77a18fa425eba9c55447fa0711e2dbfbf71907b\\spring-context-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-context-indexer\\5.2.2.RELEASE\\f31f4b86f2a4c973834848917774f12c3d108b8a\\spring-context-indexer-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-context-support\\5.2.2.RELEASE\\f09e0177737a5be5c6b6315363bfff722e3524cb\\spring-context-support-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-expression\\5.2.2.RELEASE\\eb93bc4d4eb8e0bee60ea910e0fd615869336643\\spring-expression-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-instrument\\5.2.2.RELEASE\\73de68c900985304ef13ee3c4d313facf7fbf883\\spring-instrument-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-jcl\\5.2.2.RELEASE\\35efd564bf664c0bf53bd336b583391a7f872da7\\spring-jcl-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-jdbc\\5.2.2.RELEASE\\6f0070f04c60f77d0048dc5521f8aafd5a86e87e\\spring-jdbc-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-jms\\5.2.2.RELEASE\\a275151b739a85c3ef9003338231a3798a72a870\\spring-jms-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-messaging\\5.2.2.RELEASE\\93e22c86e57017e3093347e31bdb162b928999c9\\spring-messaging-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-orm\\5.2.2.RELEASE\\1b17c9e69d92e54439a092d6943e956f80392f43\\spring-orm-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-oxm\\5.2.2.RELEASE\\6bfabf762138bffaf1799f9d27d37f0ee7896722\\spring-oxm-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-test\\5.2.2.RELEASE\\444e2f91f667558df1853b15915ac28b2185404c\\spring-test-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-tx\\5.2.2.RELEASE\\2af860baa0b094e13786613e15e1804edb7a5977\\spring-tx-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-web\\5.2.2.RELEASE\\d9b0a8079b7d604f134e3054127a7aeba65949a5\\spring-web-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-webflux\\5.2.2.RELEASE\\610c4889b4e5087e2103fcfae32144af0321d06d\\spring-webflux-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-webmvc\\5.2.2.RELEASE\\a0e9e88a296c09850f92318872f4dee9f62c8c13\\spring-webmvc-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-websocket\\5.2.2.RELEASE\\f751c66b60482096f97f28e196de25aaabc39668\\spring-websocket-5.2.2.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.security\\spring-security-core\\5.2.1.RELEASE\\f1265ecdd4636a2038768c2ab9da4b79961a3465\\spring-security-core-5.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.security\\spring-security-web\\5.2.1.RELEASE\\9e43c2d8d2dffc60bfba8ac95a106d30e9593106\\spring-security-web-5.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.security\\spring-security-crypto\\5.2.1.RELEASE\\77d7c803ab3f91231254509e37c51ee72651e0d7\\spring-security-crypto-5.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot\\2.2.1.RELEASE\\3acb07ca9d6b968209a91aec6a7751f35bf22764\\spring-boot-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter\\2.2.1.RELEASE\\5a4d687e6ffec805ce6320af7ca0b18798638200\\spring-boot-starter-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-actuator\\2.2.1.RELEASE\\6f91f2e1f75b06388b65da9d3ae54164ad427922\\spring-boot-actuator-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-autoconfigure\\2.2.1.RELEASE\\1e45b519cc3b1de0b1ecee6eed6397c19ede95a2\\spring-boot-autoconfigure-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-freemarker\\2.2.1.RELEASE\\351b315a712c46a7680d944e63782b014920b3e5\\spring-boot-starter-freemarker-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-log4j2\\2.2.1.RELEASE\\e4365822acf8b4300dae309206f75e6d12b9ac90\\spring-boot-starter-log4j2-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-web\\2.2.1.RELEASE\\689213aca6e25e2aa9b377e61273aa3d31f30f60\\spring-boot-starter-web-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-tomcat\\2.2.1.RELEASE\\da314ec9026c230906ea9d1a1330f99bbe2d0fa8\\spring-boot-starter-tomcat-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\openws\\1.5.4\\942bd987e5956fcdf1eaa56cde87112ea871d0e8\\openws-1.5.4.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\xmltooling\\1.4.4\\8cf44998d4b9cca5f9eeb47cc95d95cea9f86714\\xmltooling-1.4.4.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-core\\3.4.3\\406eedd86ea88c1442a6b1c7625a45cf696b9f55\\opensaml-core-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-saml-api\\3.4.3\\b2c68a7265e8b059ecbfff0ac6525720cd3e1a86\\opensaml-saml-api-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-saml-impl\\3.4.3\\c4bce04bec8fd065bbc014a2c4003172ec612ba6\\opensaml-saml-impl-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-messaging-api\\3.4.3\\18f68283a3729e4355a29936861f6472ab20b2be\\opensaml-messaging-api-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-messaging-impl\\3.4.3\\d0cd65f2b0a167dc25477245adf5417a8735e132\\opensaml-messaging-impl-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-soap-api\\3.4.3\\4fe18269fff79f7172d9dbe0d421886282baa434\\opensaml-soap-api-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-soap-impl\\3.4.3\\9a1b9bc0ed6a0c62f3f607cc2c1164c76a57303e\\opensaml-soap-impl-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-security-api\\3.4.3\\b6878bd144c15612ab899643e561e52f04d332c1\\opensaml-security-api-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-security-impl\\3.4.3\\72edf27dbce57ed29aebab8563a41942f7f15527\\opensaml-security-impl-3.4.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\net.shibboleth.utilities\\java-support\\7.5.0\\5540e04eca8dfaa6c3dca6328e7e0417487edcac\\java-support-7.5.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\cn.hutool\\hutool-core\\5.1.2\\8952c0cb43272ba2873be46193971825d4b9f7d9\\hutool-core-5.1.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\cn.hutool\\hutool-http\\5.1.2\\9f43596260cd0b8212a12f96051b1fa04ec0c5de\\hutool-http-5.1.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\me.zhyd.oauth\\JustAuth\\1.13.2\\27f2b1dbaf7ac21f6c3d448885d14696ef8d70be\\JustAuth-1.13.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.javassist\\javassist\\3.23.0-GA\\5c71cd6815cc207379639aca8c88478b7e959e35\\javassist-3.23.0-GA.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.owasp.esapi\\esapi\\2.2.0.0\\721cbbf80e2bf1cc3d87d4a791e4c7bc827fca95\\esapi-2.2.0.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.mail\\javax.mail\\1.6.2\\935151eb71beff17a2ffac15dd80184a99a0514f\\javax.mail-1.6.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\taglibs\\standard\\1.1.2\\a17e8a4d9a1f7fcc5eed606721c9ed6b7f18acf7\\standard-1.1.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.servlet.jsp.jstl\\jstl\\1.2\\7a93a178d5599db1321a9e5ff927b4ed015b68d8\\jstl-1.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\javax\\activation\\activation\\1.1.1\\activation-1.1.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.annotation\\javax.annotation-api\\1.3.2\\934c04d3cfef185a8008e7bf34331b79730a9d43\\javax.annotation-api-1.3.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.transaction\\jta\\1.1\\2ca09f0b36ca7d71b762e14ea2ff09d5eac57558\\jta-1.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.transaction\\javax.transaction-api\\1.3\\e006adf5cf3cca2181d16bd640ecb80148ec0fce\\javax.transaction-api-1.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.validation\\validation-api\\2.0.1.Final\\cb855558e6271b1b32e716d24cb85c7f583ce09e\\validation-api-2.0.1.Final.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.xml\\jsr173\\1.0\\8b7a70786148944ef061fca58b5467d05dae07ba\\jsr173-1.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.xml.bind\\jaxb-api\\2.3.1\\8531ad5ac454cc2deb9d4d32c40c4d7451939b5d\\jaxb-api-2.3.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.xml.bind\\jaxb-core\\2.3.0.1\\23574ca124d0a694721ce3ef13cd720095f18fdd\\jaxb-core-2.3.0.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.xml.bind\\jaxb-impl\\2.3.2\\9d70d9b54cbc91b0e647d97af87395f39ea189f9\\jaxb-impl-2.3.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.xml.bind\\jaxb-xjc\\2.3.2\\264a255681ebe9f9e955182c7922a34b5f7c4578\\jaxb-xjc-2.3.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.bouncycastle\\bcpkix-jdk15on\\1.60\\d0c46320fbc07be3a24eb13a56cee4e3d38e0c75\\bcpkix-jdk15on-1.60.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.bouncycastle\\bcprov-jdk15on\\1.60\\bd47ad3bd14b8e82595c7adaa143501e60842a84\\bcprov-jdk15on-1.60.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.bouncycastle\\bcprov-ext-jdk15on\\1.60\\faea4c950bbfa6e8882830f0266bc9185755d37\\bcprov-ext-jdk15on-1.60.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.crypto.tink\\tink\\1.2.2\\db27fd32f842b436ad07aecbe2934524473dc0ac\\tink-1.2.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.jhlabs\\filters\\2.0.235-1\\fff65ebe39d1097cee431087858b3caf957ecfb7\\filters-2.0.235-1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.github.penggle\\kaptcha\\2.3.2\\a3e13fd05bae905d67eafb40b712a1b624daef3b\\kaptcha-2.3.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.code.gson\\gson\\2.8.5\\f645ed69d595b24d4cf8b3fbb64cc505bede8829\\gson-2.8.5.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.codehaus.jackson\\jackson-all\\1.8.5\\a5549eaa90a63b20da244690f9ade851eaeb2d99\\jackson-all-1.8.5.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-databind\\2.9.9\\jackson-databind-2.9.9.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-core\\2.9.9\\jackson-core-2.9.9.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-annotations\\2.9.9\\jackson-annotations-2.9.9.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.fasterxml\\classmate\\1.5.0\\bc2d1d55f28e6dc0801d86cbd195debd81090d33\\classmate-1.5.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.alibaba\\fastjson\\1.2.62\\9243497a2f1f9d40d7d1d8d852f0abdc71955532\\fastjson-1.2.62.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.reactivestreams\\reactive-streams\\1.0.2\\323964c36556eb0e6209f65c1cef72b53b461ab8\\reactive-streams-1.0.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\io.projectreactor\\reactor-core\\3.2.10.RELEASE\\14b979abc580502c679d0b318814cef8b2066fce\\reactor-core-3.2.10.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\eu.tekul\\szxcvbn_2.9.2\\0.2\\cfac462aed38c7c0267a06993a3e3c2656807aae\\szxcvbn_2.9.2-0.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.quartz-scheduler\\quartz\\2.2.3\\d4d8ea088852beeb89f54d3040fe1cbaa8491dcd\\quartz-2.2.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\mysql\\mysql-connector-java\\5.1.48\\9140be77aafa5050bf4bb936d560cbacb5a6b5c1\\mysql-connector-java-5.1.48.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.alibaba\\druid\\1.1.21\\5b2a163e69c4afd223ca6f6f5ac440eec92c0249\\druid-1.1.21.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\redis.clients\\jedis\\3.0.1\\4e8f7e393f17e197b29f7b9481004ede8e154dcb\\jedis-3.0.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.ehcache\\ehcache\\3.5.3\\b81a3c3f1ba4feea2262d24f256fed501f2f4c48\\ehcache-3.5.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\org\\mybatis\\mybatis\\3.5.3\\mybatis-3.5.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.mybatis\\mybatis-spring\\2.0.3\\17472a85388c8d37c9ffefcc9ef0fc3edabcce02\\mybatis-spring-2.0.3.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.hibernate.validator\\hibernate-validator\\6.0.17.Final\\af73055fc4a103ab347c56e7da5a143d68a0170\\hibernate-validator-6.0.17.Final.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.hibernate.validator\\hibernate-validator-annotation-processor\\6.0.17.Final\\7e781852d08e29c11a7b35eea6fb534d7a453fd3\\hibernate-validator-annotation-processor-6.0.17.Final.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\joda-time\\joda-time\\2.10\\f66c8125d1057ffce6c4e29e624cac863e110e2b\\joda-time-2.10.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.yaml\\snakeyaml\\1.24\\13a9c0d6776483c3876e3ff9384f9bb55b17001b\\snakeyaml-1.24.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\net.sourceforge.nekohtml\\nekohtml\\1.9.22\\4f54af68ecb345f2453fb6884672ad08414154e3\\nekohtml-1.9.22.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.jdom\\jdom\\2.0.2\\d06c71e0df0ac4b94deb737718580ccce22d92e8\\jdom-2.0.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.zxing\\core\\3.4.0\\5264296c46634347890ec9250bc65f14b7362bf8\\core-3.4.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.guava\\guava\\27.1-jre\\e47b59c893079b87743cdcfb6f17ca95c08c592c\\guava-27.1-jre.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\ognl\\ognl\\3.2.9\\c582d2e2a7db6e57bfd169b6490cce64c7d245c0\\ognl-3.2.9.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\cglib\\cglib\\3.2.12\\16c0d1d8b5d50ea9ad38c1f6f9f1e35a42727bf0\\cglib-3.2.12.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.ow2.asm\\asm\\7.0\\d74d4ba0dee443f68fb2dcb7fcdb945a2cd89912\\asm-7.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\aopalliance\\aopalliance\\1.0\\aopalliance-1.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.aspectj\\aspectjtools\\1.9.4\\b907e51a8a6820926785b8933be3de4a021da90b\\aspectjtools-1.9.4.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\dom4j\\dom4j\\1.6.1\\5d3ccc056b6f056dbf0dddfdf43894b9065a8f94\\dom4j-1.6.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\xalan\\serializer\\2.7.2\\24247f3bb052ee068971393bdb83e04512bb1c3c\\serializer-2.7.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.m2\\repository\\xml-resolver\\xml-resolver\\1.2\\xml-resolver-1.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.santuario\\xmlsec\\1.5.8\\d0b5e51f571069a86c9578ec15d6d7f9da8c0e76\\xmlsec-1.5.8.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.ogce\\xpp3\\1.1.6\\dc87e00ddb69341b46a3eb1c331c6fcebf6c8546\\xpp3-1.1.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.thoughtworks.xstream\\xstream\\1.4.10\\dfecae23647abc9d9fd0416629a4213a3882b101\\xstream-1.4.10.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.belerweb\\pinyin4j\\2.5.1\\ea23babfc45a078af5b73cd9f3401caad1f1b2a9\\pinyin4j-2.5.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.tomcat.embed\\tomcat-embed-core\\9.0.29\\207dc9ca4215853d96ed695862f9873001f02a4b\\tomcat-embed-core-9.0.29.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.tomcat.embed\\tomcat-embed-logging-juli\\8.5.2\\eb8d86e9972274272133c73a976ea744d9086cf1\\tomcat-embed-logging-juli-8.5.2.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\junit\\junit\\4.11\\4e031bb61df09069aeb2bffb4019e7a5034a4ee0\\junit-4.11.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.servlet\\javax.servlet-api\\3.0.1\\6bf0ebb7efd993e222fc1112377b5e92a13b38dd\\javax.servlet-api-3.0.1.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-test\\2.2.1.RELEASE\\fae935b40f7a6b7eac7f5daef51e83c2ca978211\\spring-boot-starter-test-2.2.1.RELEASE.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\xmlunit\\xmlunit\\1.6\\adcae0aff916681dacd2b490e193f1119cd964a9\\xmlunit-1.6.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.mockito\\mockito-all\\1.10.19\\539df70269cc254a58cccc5d8e43286b4a73bf30\\mockito-all-1.10.19.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-lib\\mybatis-jpa-extra-1.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"binary","path":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-lib\\mybatis-jpa-extra-2.1-api-1.0.jar","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"source","path":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-jose-jwt\\src\\main\\java","outputFolder":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-jose-jwt\\bin\\main","isSystem":false,"isOwn":false,"isTest":false,"isJavaContent":false},{"kind":"source","path":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\src\\main\\java","outputFolder":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\bin\\main","isSystem":false,"isOwn":true,"isTest":false,"isJavaContent":true},{"kind":"source","path":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\src\\test\\java","outputFolder":"D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\bin\\test","isSystem":false,"isOwn":true,"isTest":true,"isJavaContent":true}]}
\ No newline at end of file
+{
+ "name": "maxkey-core",
+ "classpathEntries": [
+ {
+ "kind": "binary",
+ "path": "C:\\Program Files\\Java\\jre1.8.0_221\\lib\\resources.jar",
+ "javadocContainerUrl": "https://docs.oracle.com/javase/1/docs/api/",
+ "isSystem": true,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Program Files\\Java\\jre1.8.0_221\\lib\\rt.jar",
+ "javadocContainerUrl": "https://docs.oracle.com/javase/1/docs/api/",
+ "isSystem": true,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Program Files\\Java\\jre1.8.0_221\\lib\\jsse.jar",
+ "javadocContainerUrl": "https://docs.oracle.com/javase/1/docs/api/",
+ "isSystem": true,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Program Files\\Java\\jre1.8.0_221\\lib\\jce.jar",
+ "javadocContainerUrl": "https://docs.oracle.com/javase/1/docs/api/",
+ "isSystem": true,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Program Files\\Java\\jre1.8.0_221\\lib\\charsets.jar",
+ "javadocContainerUrl": "https://docs.oracle.com/javase/1/docs/api/",
+ "isSystem": true,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Program Files\\Java\\jre1.8.0_221\\lib\\jfr.jar",
+ "javadocContainerUrl": "https://docs.oracle.com/javase/1/docs/api/",
+ "isSystem": true,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-beanutils\\commons-beanutils\\1.9.3\\c845703de334ddc6b4b3cd26835458cb1cba1f3d\\commons-beanutils-1.9.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-codec\\commons-codec\\1.12\\47a28ef1ed31eb182b44e15d49300dee5fadcf6a\\commons-codec-1.12.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\commons-collections\\commons-collections\\3.2.2\\commons-collections-3.2.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-csv\\1.7\\cb5d05520f8fe1b409aaf29962e47dc5764f8f39\\commons-csv-1.7.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-dbcp2\\2.6.0\\78d0e99c4bc815a9f20cf6837761e91b7fc6eef4\\commons-dbcp2-2.6.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-dbutils\\commons-dbutils\\1.7\\a2d6e515aa87e5d38f6b3003e70b13c1b1f19ca0\\commons-dbutils-1.7.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-digester3\\3.2\\c3f68c5ff25ec5204470fd8fdf4cb8feff5e8a79\\commons-digester3-3.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-digester\\commons-digester\\2.1\\73a8001e7a54a255eef0f03521ec1805dc738ca0\\commons-digester-2.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-io\\commons-io\\2.6\\815893df5f31da2ece4040fe0a12fd44b577afaf\\commons-io-2.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-lang\\commons-lang\\2.6\\ce1edb914c94ebc388f086c6827e8bdeec71ac2\\commons-lang-2.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-lang3\\3.9\\122c7cee69b53ed4a7681c03d4ee4c0e2765da5\\commons-lang3-3.9.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\commons-logging\\commons-logging\\1.2\\commons-logging-1.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-pool2\\2.6.2\\775a8072995b29eafe8fb0a828a190589f71cede\\commons-pool2-2.6.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\commons-httpclient\\commons-httpclient\\3.1\\commons-httpclient-3.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\commons-fileupload\\commons-fileupload\\1.4\\f95188e3d372e20e7328706c37ef366e5d7859b0\\commons-fileupload-1.4.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\commons-email\\1.5\\e8e677c6362eba14ff3c476ba63ccb83132dbd52\\commons-email-1.5.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpclient\\4.5.6\\1afe5621985efe90a92d0fbc9be86271efbe796f\\httpclient-4.5.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\fluent-hc\\4.5.6\\7f4b2ccd83078e3bb87c8ad280ec074c04c7e4a4\\fluent-hc-4.5.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpclient-cache\\4.5.6\\4238cd34156021eaadc7e4d2d5c47b835e1fed3c\\httpclient-cache-4.5.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpmime\\4.5.6\\164343da11db817e81e24e0d9869527e069850c9\\httpmime-4.5.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.httpcomponents\\httpcore\\4.4.10\\acc54d9b28bdffe4bbde89ed2e4a1e86b5285e2b\\httpcore-4.4.10.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\org\\apache\\velocity\\velocity\\1.7\\velocity-1.7.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\velocity\\velocity-dep\\1.4\\b1df5193d3dd66a310b32828c547cd9e163b98df\\velocity-dep-1.4.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.freemarker\\freemarker\\2.3.29\\46005eeee02e4458520c85d0bcf5001467b053c3\\freemarker-2.3.29.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.commons\\not-yet-commons-ssl\\0.3.9\\7548f1f49b8a0b808b8715ead7b3cb2d395b0909\\not-yet-commons-ssl-0.3.9.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-1.2-api\\2.12.0\\29474790d2292384eac2ecf1b3280f095b6ac3f1\\log4j-1.2-api-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-api\\2.12.0\\8b50b487ac0c0bff1af79d56c6454ea68f40c150\\log4j-api-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-core\\2.12.0\\1723837573e4c5dbc8840f9f6e8f79b245b94bb\\log4j-core-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-jcl\\2.12.0\\c6b6cc2594e6481d1a8cf5762ed67bcab004363e\\log4j-jcl-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-jul\\2.12.0\\d50c2eb436de7128393c1fa1b71596c12462eb88\\log4j-jul-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-slf4j-impl\\2.12.0\\7f44f5201f79d6f7010a1515699a5f6c40e49cb\\log4j-slf4j-impl-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.logging.log4j\\log4j-web\\2.12.0\\93c550519d057e56c75ba5074ea4a258d1732b8b\\log4j-web-2.12.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\org\\slf4j\\slf4j-api\\1.7.26\\slf4j-api-1.7.26.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.jboss.logging\\jboss-logging\\3.4.0.Final\\b225692a59f7dc3a789d2c85edc06041914e97e7\\jboss-logging-3.4.0.Final.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-aop\\5.2.2.RELEASE\\899739cf7f338f6297aa9eb25ea8b16338fe4e6d\\spring-aop-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-aspects\\5.2.2.RELEASE\\a7fc38ee5fcc7efff607cc93b5fa7259c0fbb4da\\spring-aspects-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-beans\\5.2.2.RELEASE\\81e4d9cc2e8fac88ab4eb7325c4521bd07c6389c\\spring-beans-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-core\\5.2.2.RELEASE\\bfcf2f6d0494d89db63ae170b8491223c93a88dc\\spring-core-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-context\\5.2.2.RELEASE\\a77a18fa425eba9c55447fa0711e2dbfbf71907b\\spring-context-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-context-indexer\\5.2.2.RELEASE\\f31f4b86f2a4c973834848917774f12c3d108b8a\\spring-context-indexer-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-context-support\\5.2.2.RELEASE\\f09e0177737a5be5c6b6315363bfff722e3524cb\\spring-context-support-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-expression\\5.2.2.RELEASE\\eb93bc4d4eb8e0bee60ea910e0fd615869336643\\spring-expression-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-instrument\\5.2.2.RELEASE\\73de68c900985304ef13ee3c4d313facf7fbf883\\spring-instrument-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-jcl\\5.2.2.RELEASE\\35efd564bf664c0bf53bd336b583391a7f872da7\\spring-jcl-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-jdbc\\5.2.2.RELEASE\\6f0070f04c60f77d0048dc5521f8aafd5a86e87e\\spring-jdbc-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-jms\\5.2.2.RELEASE\\a275151b739a85c3ef9003338231a3798a72a870\\spring-jms-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-messaging\\5.2.2.RELEASE\\93e22c86e57017e3093347e31bdb162b928999c9\\spring-messaging-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-orm\\5.2.2.RELEASE\\1b17c9e69d92e54439a092d6943e956f80392f43\\spring-orm-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-oxm\\5.2.2.RELEASE\\6bfabf762138bffaf1799f9d27d37f0ee7896722\\spring-oxm-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-test\\5.2.2.RELEASE\\444e2f91f667558df1853b15915ac28b2185404c\\spring-test-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-tx\\5.2.2.RELEASE\\2af860baa0b094e13786613e15e1804edb7a5977\\spring-tx-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-web\\5.2.2.RELEASE\\d9b0a8079b7d604f134e3054127a7aeba65949a5\\spring-web-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-webflux\\5.2.2.RELEASE\\610c4889b4e5087e2103fcfae32144af0321d06d\\spring-webflux-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-webmvc\\5.2.2.RELEASE\\a0e9e88a296c09850f92318872f4dee9f62c8c13\\spring-webmvc-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework\\spring-websocket\\5.2.2.RELEASE\\f751c66b60482096f97f28e196de25aaabc39668\\spring-websocket-5.2.2.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.security\\spring-security-core\\5.2.1.RELEASE\\f1265ecdd4636a2038768c2ab9da4b79961a3465\\spring-security-core-5.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.security\\spring-security-web\\5.2.1.RELEASE\\9e43c2d8d2dffc60bfba8ac95a106d30e9593106\\spring-security-web-5.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.security\\spring-security-crypto\\5.2.1.RELEASE\\77d7c803ab3f91231254509e37c51ee72651e0d7\\spring-security-crypto-5.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot\\2.2.1.RELEASE\\3acb07ca9d6b968209a91aec6a7751f35bf22764\\spring-boot-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter\\2.2.1.RELEASE\\5a4d687e6ffec805ce6320af7ca0b18798638200\\spring-boot-starter-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-actuator\\2.2.1.RELEASE\\6f91f2e1f75b06388b65da9d3ae54164ad427922\\spring-boot-actuator-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-autoconfigure\\2.2.1.RELEASE\\1e45b519cc3b1de0b1ecee6eed6397c19ede95a2\\spring-boot-autoconfigure-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-freemarker\\2.2.1.RELEASE\\351b315a712c46a7680d944e63782b014920b3e5\\spring-boot-starter-freemarker-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-log4j2\\2.2.1.RELEASE\\e4365822acf8b4300dae309206f75e6d12b9ac90\\spring-boot-starter-log4j2-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-web\\2.2.1.RELEASE\\689213aca6e25e2aa9b377e61273aa3d31f30f60\\spring-boot-starter-web-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-tomcat\\2.2.1.RELEASE\\da314ec9026c230906ea9d1a1330f99bbe2d0fa8\\spring-boot-starter-tomcat-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\openws\\1.5.4\\942bd987e5956fcdf1eaa56cde87112ea871d0e8\\openws-1.5.4.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\xmltooling\\1.4.4\\8cf44998d4b9cca5f9eeb47cc95d95cea9f86714\\xmltooling-1.4.4.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-core\\3.4.3\\406eedd86ea88c1442a6b1c7625a45cf696b9f55\\opensaml-core-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-saml-api\\3.4.3\\b2c68a7265e8b059ecbfff0ac6525720cd3e1a86\\opensaml-saml-api-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-saml-impl\\3.4.3\\c4bce04bec8fd065bbc014a2c4003172ec612ba6\\opensaml-saml-impl-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-messaging-api\\3.4.3\\18f68283a3729e4355a29936861f6472ab20b2be\\opensaml-messaging-api-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-messaging-impl\\3.4.3\\d0cd65f2b0a167dc25477245adf5417a8735e132\\opensaml-messaging-impl-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-soap-api\\3.4.3\\4fe18269fff79f7172d9dbe0d421886282baa434\\opensaml-soap-api-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-soap-impl\\3.4.3\\9a1b9bc0ed6a0c62f3f607cc2c1164c76a57303e\\opensaml-soap-impl-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-security-api\\3.4.3\\b6878bd144c15612ab899643e561e52f04d332c1\\opensaml-security-api-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.opensaml\\opensaml-security-impl\\3.4.3\\72edf27dbce57ed29aebab8563a41942f7f15527\\opensaml-security-impl-3.4.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\net.shibboleth.utilities\\java-support\\7.5.0\\5540e04eca8dfaa6c3dca6328e7e0417487edcac\\java-support-7.5.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\cn.hutool\\hutool-core\\5.1.2\\8952c0cb43272ba2873be46193971825d4b9f7d9\\hutool-core-5.1.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\cn.hutool\\hutool-http\\5.1.2\\9f43596260cd0b8212a12f96051b1fa04ec0c5de\\hutool-http-5.1.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\me.zhyd.oauth\\JustAuth\\1.13.2\\27f2b1dbaf7ac21f6c3d448885d14696ef8d70be\\JustAuth-1.13.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.javassist\\javassist\\3.23.0-GA\\5c71cd6815cc207379639aca8c88478b7e959e35\\javassist-3.23.0-GA.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.owasp.esapi\\esapi\\2.2.0.0\\721cbbf80e2bf1cc3d87d4a791e4c7bc827fca95\\esapi-2.2.0.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.mail\\javax.mail\\1.6.2\\935151eb71beff17a2ffac15dd80184a99a0514f\\javax.mail-1.6.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\taglibs\\standard\\1.1.2\\a17e8a4d9a1f7fcc5eed606721c9ed6b7f18acf7\\standard-1.1.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.servlet.jsp.jstl\\jstl\\1.2\\7a93a178d5599db1321a9e5ff927b4ed015b68d8\\jstl-1.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\javax\\activation\\activation\\1.1.1\\activation-1.1.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.annotation\\javax.annotation-api\\1.3.2\\934c04d3cfef185a8008e7bf34331b79730a9d43\\javax.annotation-api-1.3.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.transaction\\jta\\1.1\\2ca09f0b36ca7d71b762e14ea2ff09d5eac57558\\jta-1.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.transaction\\javax.transaction-api\\1.3\\e006adf5cf3cca2181d16bd640ecb80148ec0fce\\javax.transaction-api-1.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.validation\\validation-api\\2.0.1.Final\\cb855558e6271b1b32e716d24cb85c7f583ce09e\\validation-api-2.0.1.Final.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.xml\\jsr173\\1.0\\8b7a70786148944ef061fca58b5467d05dae07ba\\jsr173-1.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.xml.bind\\jaxb-api\\2.3.1\\8531ad5ac454cc2deb9d4d32c40c4d7451939b5d\\jaxb-api-2.3.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.xml.bind\\jaxb-core\\2.3.0.1\\23574ca124d0a694721ce3ef13cd720095f18fdd\\jaxb-core-2.3.0.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.xml.bind\\jaxb-impl\\2.3.2\\9d70d9b54cbc91b0e647d97af87395f39ea189f9\\jaxb-impl-2.3.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.sun.xml.bind\\jaxb-xjc\\2.3.2\\264a255681ebe9f9e955182c7922a34b5f7c4578\\jaxb-xjc-2.3.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.bouncycastle\\bcpkix-jdk15on\\1.60\\d0c46320fbc07be3a24eb13a56cee4e3d38e0c75\\bcpkix-jdk15on-1.60.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.bouncycastle\\bcprov-jdk15on\\1.60\\bd47ad3bd14b8e82595c7adaa143501e60842a84\\bcprov-jdk15on-1.60.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.bouncycastle\\bcprov-ext-jdk15on\\1.60\\faea4c950bbfa6e8882830f0266bc9185755d37\\bcprov-ext-jdk15on-1.60.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.crypto.tink\\tink\\1.2.2\\db27fd32f842b436ad07aecbe2934524473dc0ac\\tink-1.2.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.jhlabs\\filters\\2.0.235-1\\fff65ebe39d1097cee431087858b3caf957ecfb7\\filters-2.0.235-1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.github.penggle\\kaptcha\\2.3.2\\a3e13fd05bae905d67eafb40b712a1b624daef3b\\kaptcha-2.3.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.code.gson\\gson\\2.8.5\\f645ed69d595b24d4cf8b3fbb64cc505bede8829\\gson-2.8.5.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.codehaus.jackson\\jackson-all\\1.8.5\\a5549eaa90a63b20da244690f9ade851eaeb2d99\\jackson-all-1.8.5.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-databind\\2.9.9\\jackson-databind-2.9.9.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-core\\2.9.9\\jackson-core-2.9.9.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\com\\fasterxml\\jackson\\core\\jackson-annotations\\2.9.9\\jackson-annotations-2.9.9.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.fasterxml\\classmate\\1.5.0\\bc2d1d55f28e6dc0801d86cbd195debd81090d33\\classmate-1.5.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.alibaba\\fastjson\\1.2.62\\9243497a2f1f9d40d7d1d8d852f0abdc71955532\\fastjson-1.2.62.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.reactivestreams\\reactive-streams\\1.0.2\\323964c36556eb0e6209f65c1cef72b53b461ab8\\reactive-streams-1.0.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\io.projectreactor\\reactor-core\\3.2.10.RELEASE\\14b979abc580502c679d0b318814cef8b2066fce\\reactor-core-3.2.10.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\eu.tekul\\szxcvbn_2.9.2\\0.2\\cfac462aed38c7c0267a06993a3e3c2656807aae\\szxcvbn_2.9.2-0.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.quartz-scheduler\\quartz\\2.2.3\\d4d8ea088852beeb89f54d3040fe1cbaa8491dcd\\quartz-2.2.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\mysql\\mysql-connector-java\\5.1.48\\9140be77aafa5050bf4bb936d560cbacb5a6b5c1\\mysql-connector-java-5.1.48.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.alibaba\\druid\\1.1.21\\5b2a163e69c4afd223ca6f6f5ac440eec92c0249\\druid-1.1.21.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\redis.clients\\jedis\\3.0.1\\4e8f7e393f17e197b29f7b9481004ede8e154dcb\\jedis-3.0.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.ehcache\\ehcache\\3.5.3\\b81a3c3f1ba4feea2262d24f256fed501f2f4c48\\ehcache-3.5.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\org\\mybatis\\mybatis\\3.5.3\\mybatis-3.5.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.mybatis\\mybatis-spring\\2.0.3\\17472a85388c8d37c9ffefcc9ef0fc3edabcce02\\mybatis-spring-2.0.3.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.hibernate.validator\\hibernate-validator\\6.0.17.Final\\af73055fc4a103ab347c56e7da5a143d68a0170\\hibernate-validator-6.0.17.Final.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.hibernate.validator\\hibernate-validator-annotation-processor\\6.0.17.Final\\7e781852d08e29c11a7b35eea6fb534d7a453fd3\\hibernate-validator-annotation-processor-6.0.17.Final.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\joda-time\\joda-time\\2.10\\f66c8125d1057ffce6c4e29e624cac863e110e2b\\joda-time-2.10.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.yaml\\snakeyaml\\1.24\\13a9c0d6776483c3876e3ff9384f9bb55b17001b\\snakeyaml-1.24.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\net.sourceforge.nekohtml\\nekohtml\\1.9.22\\4f54af68ecb345f2453fb6884672ad08414154e3\\nekohtml-1.9.22.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.jdom\\jdom\\2.0.2\\d06c71e0df0ac4b94deb737718580ccce22d92e8\\jdom-2.0.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.zxing\\core\\3.4.0\\5264296c46634347890ec9250bc65f14b7362bf8\\core-3.4.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.google.guava\\guava\\27.1-jre\\e47b59c893079b87743cdcfb6f17ca95c08c592c\\guava-27.1-jre.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\ognl\\ognl\\3.2.9\\c582d2e2a7db6e57bfd169b6490cce64c7d245c0\\ognl-3.2.9.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\cglib\\cglib\\3.2.12\\16c0d1d8b5d50ea9ad38c1f6f9f1e35a42727bf0\\cglib-3.2.12.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.ow2.asm\\asm\\7.0\\d74d4ba0dee443f68fb2dcb7fcdb945a2cd89912\\asm-7.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\aopalliance\\aopalliance\\1.0\\aopalliance-1.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.aspectj\\aspectjtools\\1.9.4\\b907e51a8a6820926785b8933be3de4a021da90b\\aspectjtools-1.9.4.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\dom4j\\dom4j\\1.6.1\\5d3ccc056b6f056dbf0dddfdf43894b9065a8f94\\dom4j-1.6.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\xalan\\serializer\\2.7.2\\24247f3bb052ee068971393bdb83e04512bb1c3c\\serializer-2.7.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.m2\\repository\\xml-resolver\\xml-resolver\\1.2\\xml-resolver-1.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.santuario\\xmlsec\\1.5.8\\d0b5e51f571069a86c9578ec15d6d7f9da8c0e76\\xmlsec-1.5.8.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.ogce\\xpp3\\1.1.6\\dc87e00ddb69341b46a3eb1c331c6fcebf6c8546\\xpp3-1.1.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.thoughtworks.xstream\\xstream\\1.4.10\\dfecae23647abc9d9fd0416629a4213a3882b101\\xstream-1.4.10.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\com.belerweb\\pinyin4j\\2.5.1\\ea23babfc45a078af5b73cd9f3401caad1f1b2a9\\pinyin4j-2.5.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.tomcat.embed\\tomcat-embed-core\\9.0.29\\207dc9ca4215853d96ed695862f9873001f02a4b\\tomcat-embed-core-9.0.29.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.apache.tomcat.embed\\tomcat-embed-logging-juli\\8.5.2\\eb8d86e9972274272133c73a976ea744d9086cf1\\tomcat-embed-logging-juli-8.5.2.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\junit\\junit\\4.11\\4e031bb61df09069aeb2bffb4019e7a5034a4ee0\\junit-4.11.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\javax.servlet\\javax.servlet-api\\3.0.1\\6bf0ebb7efd993e222fc1112377b5e92a13b38dd\\javax.servlet-api-3.0.1.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-test\\2.2.1.RELEASE\\fae935b40f7a6b7eac7f5daef51e83c2ca978211\\spring-boot-starter-test-2.2.1.RELEASE.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\xmlunit\\xmlunit\\1.6\\adcae0aff916681dacd2b490e193f1119cd964a9\\xmlunit-1.6.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "C:\\Users\\Administrator\\.gradle\\caches\\modules-2\\files-2.1\\org.mockito\\mockito-all\\1.10.19\\539df70269cc254a58cccc5d8e43286b4a73bf30\\mockito-all-1.10.19.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-lib\\mybatis-jpa-extra-1.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "binary",
+ "path": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-lib\\mybatis-jpa-extra-2.1-api-1.0.jar",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "source",
+ "path": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-jose-jwt\\src\\main\\java",
+ "outputFolder": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-jose-jwt\\bin\\main",
+ "isSystem": false,
+ "isOwn": false,
+ "isTest": false,
+ "isJavaContent": false
+ },
+ {
+ "kind": "source",
+ "path": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\src\\main\\java",
+ "outputFolder": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\bin\\main",
+ "isSystem": false,
+ "isOwn": true,
+ "isTest": false,
+ "isJavaContent": true
+ },
+ {
+ "kind": "source",
+ "path": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\src\\test\\java",
+ "outputFolder": "D:\\JavaIDE\\Workspaces\\maxkey\\MaxKey\\maxkey-core\\bin\\test",
+ "isSystem": false,
+ "isOwn": true,
+ "isTest": true,
+ "isJavaContent": true
+ }
+ ]
+}
\ No newline at end of file
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 844df314d..20b080b8c 100644
--- a/maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java
+++ b/maxkey-core/src/main/java/org/maxkey/authn/AbstractAuthenticationProvider.java
@@ -19,58 +19,59 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
-
/**
* login Authentication abstract class
*
* @author Crystal.Sea
*
*/
-public abstract class AbstractAuthenticationProvider{
-
+public abstract class AbstractAuthenticationProvider {
+
private static final Logger _logger = LoggerFactory.getLogger(AbstractAuthenticationProvider.class);
- @Autowired
- @Qualifier("applicationConfig")
- protected ApplicationConfig applicationConfig;
-
- @Autowired
- @Qualifier("authenticationRealm")
- protected AbstractAuthenticationRealm authenticationRealm;
-
- @Autowired
- @Qualifier("tfaOTPAuthn")
- protected AbstractOTPAuthn tfaOTPAuthn;
-
- @Autowired
- @Qualifier("remeberMeService")
- protected AbstractRemeberMeService remeberMeService;
+ @Autowired
+ @Qualifier("applicationConfig")
+ protected ApplicationConfig applicationConfig;
+
+ @Autowired
+ @Qualifier("authenticationRealm")
+ protected AbstractAuthenticationRealm authenticationRealm;
+
+ @Autowired
+ @Qualifier("tfaOTPAuthn")
+ protected AbstractOTPAuthn tfaOTPAuthn;
+
+ @Autowired
+ @Qualifier("remeberMeService")
+ protected AbstractRemeberMeService remeberMeService;
+
+ protected abstract String getProviderName();
- protected abstract String getProviderName();
-
protected abstract Authentication doInternalAuthenticate(Authentication authentication);
-
+
@SuppressWarnings("rawtypes")
- public boolean supports(Class authentication) {
+ public boolean supports(Class authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
- /*
- * authenticate
- * (non-Javadoc)
- * @see org.springframework.security.authentication.AuthenticationProvider#authenticate(org.springframework.security.core.Authentication)
+ /*
+ * authenticate (non-Javadoc)
+ *
+ * @see org.springframework.security.authentication.AuthenticationProvider#
+ * authenticate(org.springframework.security.core.Authentication)
*/
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
_logger.debug("Trying to authenticate user '{}' via {}", authentication.getPrincipal(), getProviderName());
-
+
try {
authentication = doInternalAuthenticate(authentication);
} catch (AuthenticationException e) {
- e.printStackTrace();
- _logger.error("Failed to authenticate user {} via {}: {}", new Object[]{authentication.getPrincipal(), getProviderName(), e.getMessage()});
+ e.printStackTrace();
+ _logger.error("Failed to authenticate user {} via {}: {}",
+ new Object[] { authentication.getPrincipal(), getProviderName(), e.getMessage() });
throw e;
} catch (Exception e) {
- e.printStackTrace();
+ e.printStackTrace();
String message = "Unexpected exception in " + getProviderName() + " authentication:";
_logger.error(message, e);
throw new AuthenticationServiceException(message, e);
@@ -78,188 +79,195 @@ public abstract class AbstractAuthenticationProvider{
if (!authentication.isAuthenticated()) {
return authentication;
}
-
+
// user authenticated
_logger.debug("'{}' authenticated successfully by {}.", authentication.getPrincipal(), getProviderName());
-
- UserInfo userInfo=WebContext.getUserInfo();
- Object password_set_type=WebContext.getSession().getAttribute(WebConstants.CURRENT_LOGIN_USER_PASSWORD_SET_TYPE);
- //登录完成后切换SESSION
+
+ UserInfo userInfo = WebContext.getUserInfo();
+ Object password_set_type = WebContext.getSession()
+ .getAttribute(WebConstants.CURRENT_LOGIN_USER_PASSWORD_SET_TYPE);
+ // 登录完成后切换SESSION
_logger.debug("Login Session {}.", WebContext.getSession().getId());
- WebContext.getSession().invalidate();
+ WebContext.getSession().invalidate();
WebContext.setAttribute(WebConstants.CURRENT_USER_SESSION_ID, WebContext.getSession().getId());
_logger.debug("Login Success Session {}.", WebContext.getSession().getId());
-
- authenticationRealm.insertLoginHistory(userInfo,LOGINTYPE.LOCAL,"","xe00000004","success");
-
- //认证设置
- WebContext.setAuthentication(authentication);
- WebContext.setUserInfo(userInfo);
- WebContext.getSession().setAttribute(WebConstants.CURRENT_LOGIN_USER_PASSWORD_SET_TYPE,password_set_type);
-
+
+ authenticationRealm.insertLoginHistory(userInfo, LOGINTYPE.LOCAL, "", "xe00000004", "success");
+
+ // 认证设置
+ WebContext.setAuthentication(authentication);
+ WebContext.setUserInfo(userInfo);
+ WebContext.getSession().setAttribute(WebConstants.CURRENT_LOGIN_USER_PASSWORD_SET_TYPE, password_set_type);
+
// create new authentication response containing the user and it's authorities
- UsernamePasswordAuthenticationToken simpleUserAuthentication = new UsernamePasswordAuthenticationToken(userInfo.getUsername(), authentication.getCredentials(), authentication.getAuthorities());
+ UsernamePasswordAuthenticationToken simpleUserAuthentication = new UsernamePasswordAuthenticationToken(
+ userInfo.getUsername(), authentication.getCredentials(), authentication.getAuthorities());
return simpleUserAuthentication;
}
-
-
/**
* session validate
+ *
* @param j_username
* @param j_cname
* @param sessionId
*/
- protected void sessionValid(String j_sessionId){
- if(j_sessionId==null || ! j_sessionId.equals(WebContext.getSession().getId())){
- String message=WebContext.getI18nValue("login.error.session");
- _logger.debug("login session valid error.");
- throw new BadCredentialsException(message);
+ protected void sessionValid(String j_sessionId) {
+ if (j_sessionId == null || !j_sessionId.equals(WebContext.getSession().getId())) {
+ String message = WebContext.getI18nValue("login.error.session");
+ _logger.debug("login session valid error.");
+ throw new BadCredentialsException(message);
}
}
-
+
/**
* session validate
+ *
* @param j_username
* @param j_cname
* @param sessionId
*/
- protected void jwtTokenValid(String j_jwtToken){
- /*if(j_jwtToken!=null && ! j_jwtToken.equals("")){
- if(jwtLoginService.jwtTokenValidation(j_jwtToken)){
- return;
- }
- }*/
- String message=WebContext.getI18nValue("login.error.session");
- _logger.debug("login session valid error.");
- throw new BadCredentialsException(message);
+ protected void jwtTokenValid(String j_jwtToken) {
+ /*
+ * if(j_jwtToken!=null && ! j_jwtToken.equals("")){
+ * if(jwtLoginService.jwtTokenValidation(j_jwtToken)){ return; } }
+ */
+ String message = WebContext.getI18nValue("login.error.session");
+ _logger.debug("login session valid error.");
+ throw new BadCredentialsException(message);
}
- protected void authTypeValid(String j_auth_type){
- if(j_auth_type==null){
- String message=WebContext.getI18nValue("login.error.authtype");
- _logger.debug("login AuthN type can not been null .");
- throw new BadCredentialsException(message);
+ protected void authTypeValid(String j_auth_type) {
+ if (j_auth_type == null) {
+ String message = WebContext.getI18nValue("login.error.authtype");
+ _logger.debug("login AuthN type can not been null .");
+ throw new BadCredentialsException(message);
}
}
+
/**
* captcha validate
+ *
* @param j_username
* @param j_cname
* @param captcha
*/
- protected void captchaValid(String j_captcha,String j_auth_type){
- if(applicationConfig.getLoginConfig().isCaptcha()){//for basic
- if(j_auth_type.equalsIgnoreCase("common")){
- _logger.info("captcha : "+WebContext.getSession().getAttribute(WebConstants.KAPTCHA_SESSION_KEY).toString());
- if(j_captcha==null
- || !j_captcha.equals(WebContext.getSession().getAttribute(WebConstants.KAPTCHA_SESSION_KEY).toString())){
- String message=WebContext.getI18nValue("login.error.captcha");
- _logger.debug("login captcha valid error.");
- throw new BadCredentialsException(message);
- }
- }
+ protected void captchaValid(String j_captcha, String j_auth_type) {
+ if (applicationConfig.getLoginConfig().isCaptcha()) {// for basic
+ if (j_auth_type.equalsIgnoreCase("common")) {
+ _logger.info("captcha : "
+ + WebContext.getSession().getAttribute(WebConstants.KAPTCHA_SESSION_KEY).toString());
+ if (j_captcha == null || !j_captcha
+ .equals(WebContext.getSession().getAttribute(WebConstants.KAPTCHA_SESSION_KEY).toString())) {
+ String message = WebContext.getI18nValue("login.error.captcha");
+ _logger.debug("login captcha valid error.");
+ throw new BadCredentialsException(message);
+ }
+ }
}
}
-
+
/**
* captcha validate
+ *
* @param j_username
* @param j_cname
* @param j_otp_captcha
*/
- protected void tftcaptchaValid(String j_otp_captcha,String j_auth_type,UserInfo userInfo){
- if(applicationConfig.getLoginConfig().isOneTimePwd()){//for one time password 2 factor
- if(j_auth_type.equalsIgnoreCase("tfa")){
- UserInfo validUserInfo=new UserInfo();
- validUserInfo.setUsername(userInfo.getUsername());
- String sharedSecret=PasswordReciprocal.getInstance().decoder(userInfo.getSharedSecret());
- validUserInfo.setSharedSecret(sharedSecret);
- validUserInfo.setSharedCounter(userInfo.getSharedCounter());
- validUserInfo.setId(userInfo.getId());
- if(j_otp_captcha==null||!tfaOTPAuthn.validate(validUserInfo, j_otp_captcha)){
- String message=WebContext.getI18nValue("login.error.captcha");
- _logger.debug("login captcha valid error.");
- throw new BadCredentialsException(message);
- }
- }
-
- }
+ protected void tftcaptchaValid(String j_otp_captcha, String j_auth_type, UserInfo userInfo) {
+ if (applicationConfig.getLoginConfig().isOneTimePwd()) {// for one time password 2 factor
+ if (j_auth_type.equalsIgnoreCase("tfa")) {
+ UserInfo validUserInfo = new UserInfo();
+ validUserInfo.setUsername(userInfo.getUsername());
+ String sharedSecret = PasswordReciprocal.getInstance().decoder(userInfo.getSharedSecret());
+ validUserInfo.setSharedSecret(sharedSecret);
+ validUserInfo.setSharedCounter(userInfo.getSharedCounter());
+ validUserInfo.setId(userInfo.getId());
+ if (j_otp_captcha == null || !tfaOTPAuthn.validate(validUserInfo, j_otp_captcha)) {
+ String message = WebContext.getI18nValue("login.error.captcha");
+ _logger.debug("login captcha valid error.");
+ throw new BadCredentialsException(message);
+ }
+ }
+
+ }
}
-
+
/**
- * login user by j_username and j_cname
- * first query user by j_cname
- * if first step userinfo is null,query user from system
+ * login user by j_username and j_cname first query user by j_cname if first
+ * step userinfo is null,query user from system
+ *
* @param j_username
* @param j_cname
* @return
*/
- protected UserInfo loadUserInfo(String j_username,String j_password){
- UserInfo userInfo = authenticationRealm.loadUserInfo(j_username,j_password);
-
- if(userInfo != null){
- if(userInfo.getUserType()=="SYSTEM"){
- _logger.debug("SYSTEM User Login. ");
- }else{
- _logger.debug("User Login. ");
- }
- }
+ protected UserInfo loadUserInfo(String j_username, String j_password) {
+ UserInfo userInfo = authenticationRealm.loadUserInfo(j_username, j_password);
- return userInfo;
+ if (userInfo != null) {
+ if (userInfo.getUserType() == "SYSTEM") {
+ _logger.debug("SYSTEM User Login. ");
+ } else {
+ _logger.debug("User Login. ");
+ }
+ }
+
+ return userInfo;
}
-
-
+
/**
- * check input password empty
+ * check input password empty
+ *
* @param password
* @return
*/
- protected boolean emptyPasswordValid(String j_password){
- if(null==j_password||"".equals(j_password)){
- throw new BadCredentialsException(WebContext.getI18nValue("login.error.password.null"));
- }
- return true;
+ protected boolean emptyPasswordValid(String j_password) {
+ if (null == j_password || "".equals(j_password)) {
+ throw new BadCredentialsException(WebContext.getI18nValue("login.error.password.null"));
+ }
+ return true;
}
-
+
/**
- * check input username or password empty
+ * check input username or password empty
+ *
* @param j_username
* @param password
* @return
*/
- protected boolean emptyEmailValid(String j_email){
- if(null==j_email||"".equals(j_email)){
- throw new BadCredentialsException("login.error.email.null");
- }
- return true;
+ protected boolean emptyEmailValid(String j_email) {
+ if (null == j_email || "".equals(j_email)) {
+ throw new BadCredentialsException("login.error.email.null");
+ }
+ return true;
}
-
+
/**
- * check input username empty
+ * check input username empty
+ *
* @param j_username
* @return
*/
- protected boolean emptyUsernameValid(String j_username){
- if(null==j_username||"".equals(j_username)){
- throw new BadCredentialsException(WebContext.getI18nValue("login.error.username.null"));
- }
- return true;
+ protected boolean emptyUsernameValid(String j_username) {
+ if (null == j_username || "".equals(j_username)) {
+ throw new BadCredentialsException(WebContext.getI18nValue("login.error.username.null"));
+ }
+ return true;
}
-
- protected boolean userinfoValid(UserInfo userInfo,String j_username){
- if(null==userInfo){
- String message=WebContext.getI18nValue("login.error.username");
- _logger.debug("login user "+j_username+" not in this System ."+message);
- UserInfo loginUser=new UserInfo(j_username);
- loginUser.setId(loginUser.generateId());
- loginUser.setDisplayName("not exist");
- loginUser.setLoginCount(0);
- authenticationRealm.insertLoginHistory(loginUser,LOGINTYPE.LOCAL,"",WebContext.getI18nValue("login.error.username"),"user not exist");
- throw new BadCredentialsException(WebContext.getI18nValue("login.error.username"));
- }
- return true;
+
+ protected boolean userinfoValid(UserInfo userInfo, String j_username) {
+ if (null == userInfo) {
+ String message = WebContext.getI18nValue("login.error.username");
+ _logger.debug("login user " + j_username + " not in this System ." + message);
+ UserInfo loginUser = new UserInfo(j_username);
+ loginUser.setId(loginUser.generateId());
+ loginUser.setDisplayName("not exist");
+ loginUser.setLoginCount(0);
+ authenticationRealm.insertLoginHistory(loginUser, LOGINTYPE.LOCAL, "",
+ WebContext.getI18nValue("login.error.username"), "user not exist");
+ throw new BadCredentialsException(WebContext.getI18nValue("login.error.username"));
+ }
+ return true;
}
-
-
+
}
\ No newline at end of file
diff --git a/maxkey-core/src/main/java/org/maxkey/authn/BasicAuthentication.java b/maxkey-core/src/main/java/org/maxkey/authn/BasicAuthentication.java
index 68f15d3ac..364903dea 100644
--- a/maxkey-core/src/main/java/org/maxkey/authn/BasicAuthentication.java
+++ b/maxkey-core/src/main/java/org/maxkey/authn/BasicAuthentication.java
@@ -6,13 +6,13 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
-public class BasicAuthentication implements Authentication{
- /**
- *
- */
- private static final long serialVersionUID = -110742975439268030L;
- String j_username ;
- String j_password ;
+public class BasicAuthentication implements Authentication {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -110742975439268030L;
+ String j_username;
+ String j_password;
String j_sessionid;
String j_captcha;
String j_otp_captcha;
@@ -21,135 +21,134 @@ public class BasicAuthentication implements Authentication{
String j_jwt_token;
ArrayList grantedAuthority;
boolean authenticated;
-
- public BasicAuthentication() {
- grantedAuthority = new ArrayList();
- grantedAuthority.add(new SimpleGrantedAuthority("ROLE_USER"));
- grantedAuthority.add(new SimpleGrantedAuthority("ORDINARY_USER"));
- }
- @Override
- public String getName() {
- return "Basic Authentication";
- }
+ public BasicAuthentication() {
+ grantedAuthority = new ArrayList();
+ grantedAuthority.add(new SimpleGrantedAuthority("ROLE_USER"));
+ grantedAuthority.add(new SimpleGrantedAuthority("ORDINARY_USER"));
+ }
- @Override
- public Collection extends GrantedAuthority> getAuthorities() {
- return grantedAuthority;
- }
+ @Override
+ public String getName() {
+ return "Basic Authentication";
+ }
- @Override
- public Object getCredentials() {
- return this.getJ_password();
- }
+ @Override
+ public Collection extends GrantedAuthority> getAuthorities() {
+ return grantedAuthority;
+ }
- @Override
- public Object getDetails() {
- return null;
- }
+ @Override
+ public Object getCredentials() {
+ return this.getJ_password();
+ }
- @Override
- public Object getPrincipal() {
- return this.getJ_username();
- }
+ @Override
+ public Object getDetails() {
+ return null;
+ }
- @Override
- public boolean isAuthenticated() {
- return authenticated;
- }
+ @Override
+ public Object getPrincipal() {
+ return this.getJ_username();
+ }
- @Override
- public void setAuthenticated(boolean authenticated) throws IllegalArgumentException {
- this.authenticated=authenticated;
-
- }
+ @Override
+ public boolean isAuthenticated() {
+ return authenticated;
+ }
- public String getJ_username() {
- return j_username;
- }
-
- public String getUsername() {
- return j_username;
- }
+ @Override
+ public void setAuthenticated(boolean authenticated) throws IllegalArgumentException {
+ this.authenticated = authenticated;
- public void setJ_username(String j_username) {
- this.j_username = j_username;
- }
+ }
- public String getJ_password() {
- return j_password;
- }
+ public String getJ_username() {
+ return j_username;
+ }
- public void setJ_password(String j_password) {
- this.j_password = j_password;
- }
+ public String getUsername() {
+ return j_username;
+ }
- public String getJ_sessionid() {
- return j_sessionid;
- }
- public String getSessionid() {
- return j_sessionid;
- }
+ public void setJ_username(String j_username) {
+ this.j_username = j_username;
+ }
- public void setJ_sessionid(String j_sessionid) {
- this.j_sessionid = j_sessionid;
- }
+ public String getJ_password() {
+ return j_password;
+ }
- public String getJ_captcha() {
- return j_captcha;
- }
+ public void setJ_password(String j_password) {
+ this.j_password = j_password;
+ }
- public void setJ_captcha(String j_captcha) {
- this.j_captcha = j_captcha;
- }
+ public String getJ_sessionid() {
+ return j_sessionid;
+ }
- public String getJ_otp_captcha() {
- return j_otp_captcha;
- }
+ public String getSessionid() {
+ return j_sessionid;
+ }
- public void setJ_otp_captcha(String j_otp_captcha) {
- this.j_otp_captcha = j_otp_captcha;
- }
+ public void setJ_sessionid(String j_sessionid) {
+ this.j_sessionid = j_sessionid;
+ }
- public String getJ_remeberme() {
- return j_remeberme;
- }
+ public String getJ_captcha() {
+ return j_captcha;
+ }
- public void setJ_remeberme(String j_remeberme) {
- this.j_remeberme = j_remeberme;
- }
+ public void setJ_captcha(String j_captcha) {
+ this.j_captcha = j_captcha;
+ }
- public String getJ_auth_type() {
- return j_auth_type;
- }
+ public String getJ_otp_captcha() {
+ return j_otp_captcha;
+ }
- public void setJ_auth_type(String j_auth_type) {
- this.j_auth_type = j_auth_type;
- }
+ public void setJ_otp_captcha(String j_otp_captcha) {
+ this.j_otp_captcha = j_otp_captcha;
+ }
- public String getJ_jwt_token() {
- return j_jwt_token;
- }
+ public String getJ_remeberme() {
+ return j_remeberme;
+ }
- public void setJ_jwt_token(String j_jwt_token) {
- this.j_jwt_token = j_jwt_token;
- }
-
- public ArrayList getGrantedAuthority() {
- return grantedAuthority;
- }
+ public void setJ_remeberme(String j_remeberme) {
+ this.j_remeberme = j_remeberme;
+ }
- public void setGrantedAuthority(ArrayList grantedAuthority) {
- this.grantedAuthority = grantedAuthority;
- }
+ public String getJ_auth_type() {
+ return j_auth_type;
+ }
- @Override
- public String toString() {
- return "BasicAuthentication [j_username=" + j_username + ", j_sessionId=" + j_sessionid + ", j_captcha="
- + j_captcha + ", j_otp_captcha=" + j_otp_captcha + ", j_remeberMe=" + j_remeberme + ", j_auth_type="
- + j_auth_type + ", j_jwtToken=" + j_jwt_token + ", authenticated=" + authenticated + "]";
- }
-
-
+ public void setJ_auth_type(String j_auth_type) {
+ this.j_auth_type = j_auth_type;
+ }
+
+ public String getJ_jwt_token() {
+ return j_jwt_token;
+ }
+
+ public void setJ_jwt_token(String j_jwt_token) {
+ this.j_jwt_token = j_jwt_token;
+ }
+
+ public ArrayList getGrantedAuthority() {
+ return grantedAuthority;
+ }
+
+ public void setGrantedAuthority(ArrayList grantedAuthority) {
+ this.grantedAuthority = grantedAuthority;
+ }
+
+ @Override
+ public String toString() {
+ return "BasicAuthentication [j_username=" + j_username + ", j_sessionId=" + j_sessionid + ", j_captcha="
+ + j_captcha + ", j_otp_captcha=" + j_otp_captcha + ", j_remeberMe=" + j_remeberme + ", j_auth_type="
+ + j_auth_type + ", j_jwtToken=" + j_jwt_token + ", authenticated=" + authenticated + "]";
+ }
}
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 64d551390..c20d7818b 100644
--- a/maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java
+++ b/maxkey-core/src/main/java/org/maxkey/authn/RealmAuthenticationProvider.java
@@ -18,67 +18,67 @@ import org.springframework.web.context.request.ServletRequestAttributes;
*
*/
public class RealmAuthenticationProvider extends AbstractAuthenticationProvider {
-
+
private static final Logger _logger = LoggerFactory.getLogger(RealmAuthenticationProvider.class);
protected String getProviderName() {
return "RealmAuthenticationProvider";
}
-
+
@Override
protected Authentication doInternalAuthenticate(Authentication authentication) {
- BasicAuthentication auth =(BasicAuthentication)authentication;
+ BasicAuthentication auth = (BasicAuthentication)authentication;
- _logger.debug("authentication "+auth);
-
- sessionValid(auth.getJ_sessionid());
-
- //jwtTokenValid(j_jwtToken);
-
- authTypeValid(auth.getJ_auth_type());
-
- captchaValid(auth.getJ_captcha(),auth.getJ_auth_type());
-
- emptyPasswordValid(auth.getJ_password());
-
- UserInfo userInfo = null;
-
- emptyUsernameValid(auth.getJ_username());
-
- userInfo= loadUserInfo(auth.getJ_username(),auth.getJ_password());
-
- userinfoValid(userInfo, auth.getJ_password());
-
- tftcaptchaValid(auth.getJ_otp_captcha(),auth.getJ_auth_type(),userInfo);
-
- authenticationRealm.passwordPolicyValid(userInfo);
-
- authenticationRealm.passwordMatches(userInfo, auth.getJ_password());
- authenticationRealm.grantAuthority(userInfo);
- /**
- * put userInfo to current session context
- */
- WebContext.setUserInfo(userInfo);
-
- auth.setAuthenticated(true);
-
- if(auth.isAuthenticated()&&applicationConfig.getLoginConfig().isRemeberMe()){
- 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());
- }
- }
+ _logger.debug("authentication " + auth);
- UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =new UsernamePasswordAuthenticationToken(
- auth,
- "PASSWORD",
- authenticationRealm.grantAuthority(userInfo));
- usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetails(WebContext.getRequest()));
-
- return usernamePasswordAuthenticationToken;
+ sessionValid(auth.getJ_sessionid());
+
+ //jwtTokenValid(j_jwtToken);
+
+ authTypeValid(auth.getJ_auth_type());
+
+ captchaValid(auth.getJ_captcha(),auth.getJ_auth_type());
+
+ emptyPasswordValid(auth.getJ_password());
+
+ UserInfo userInfo = null;
+
+ emptyUsernameValid(auth.getJ_username());
+
+ userInfo= loadUserInfo(auth.getJ_username(),auth.getJ_password());
+
+ userinfoValid(userInfo, auth.getJ_password());
+
+ tftcaptchaValid(auth.getJ_otp_captcha(),auth.getJ_auth_type(),userInfo);
+
+ authenticationRealm.passwordPolicyValid(userInfo);
+
+ authenticationRealm.passwordMatches(userInfo, auth.getJ_password());
+ authenticationRealm.grantAuthority(userInfo);
+ /**
+ * put userInfo to current session context
+ */
+ WebContext.setUserInfo(userInfo);
+
+ auth.setAuthenticated(true);
+
+ if(auth.isAuthenticated()&&applicationConfig.getLoginConfig().isRemeberMe()){
+ 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());
+ }
+ }
+
+ UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =new UsernamePasswordAuthenticationToken(
+ auth,
+ "PASSWORD",
+ authenticationRealm.grantAuthority(userInfo));
+ usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetails(WebContext.getRequest()));
+
+ return usernamePasswordAuthenticationToken;
}
}
\ No newline at end of file
diff --git a/maxkey-protocols/maxkey-protocol-oauth-2.0/.project b/maxkey-protocols/maxkey-protocol-oauth-2.0/.project
index bb2522b2f..9ae948d52 100644
--- a/maxkey-protocols/maxkey-protocol-oauth-2.0/.project
+++ b/maxkey-protocols/maxkey-protocol-oauth-2.0/.project
@@ -25,11 +25,17 @@
+
+ net.sf.eclipsecs.core.CheckstyleBuilder
+
+
+
org.eclipse.jdt.core.javanature
org.eclipse.buildship.core.gradleprojectnature
org.eclipse.wst.common.project.facet.core.nature
org.eclipse.wst.common.modulecore.ModuleCoreNature
+ net.sf.eclipsecs.core.CheckstyleNature
diff --git a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/AuthenticationScheme.java b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/AuthenticationScheme.java
index d8bc93392..c9cfb6200 100644
--- a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/AuthenticationScheme.java
+++ b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/AuthenticationScheme.java
@@ -17,23 +17,23 @@ package org.maxkey.authz.oauth2.common;
*/
public enum AuthenticationScheme {
- /**
- * Send an Authorization header.
- */
- header,
+ /**
+ * Send an Authorization header.
+ */
+ header,
- /**
- * Send a query parameter in the URI.
- */
- query,
+ /**
+ * Send a query parameter in the URI.
+ */
+ query,
- /**
- * Send in the form body.
- */
- form,
+ /**
+ * Send in the form body.
+ */
+ form,
- /**
- * Do not send at all.
- */
- none
+ /**
+ * Do not send at all.
+ */
+ none
}
\ No newline at end of file
diff --git a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2AccessToken.java b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2AccessToken.java
index 02cde0951..1e8cfc99b 100644
--- a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2AccessToken.java
+++ b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2AccessToken.java
@@ -18,222 +18,227 @@ import java.util.TreeSet;
*/
public class DefaultOAuth2AccessToken implements Serializable, OAuth2AccessToken {
- private static final long serialVersionUID = 914967629530462926L;
+ private static final long serialVersionUID = 914967629530462926L;
- private String value;
+ private String value;
- private Date expiration;
+ private Date expiration;
- private String tokenType = BEARER_TYPE.toLowerCase();
+ private String tokenType = BEARER_TYPE.toLowerCase();
- private OAuth2RefreshToken refreshToken;
+ private OAuth2RefreshToken refreshToken;
- private Set scope;
+ private Set scope;
- private Map additionalInformation = Collections.emptyMap();
+ private Map additionalInformation = Collections.emptyMap();
- /**
- * Create an access token from the value provided.
- */
- public DefaultOAuth2AccessToken(String value) {
- this.value = value;
- }
+ /**
+ * Create an access token from the value provided.
+ */
+ public DefaultOAuth2AccessToken(String value) {
+ this.value = value;
+ }
- /**
- * Private constructor for JPA and other serialization tools.
- */
- @SuppressWarnings("unused")
- private DefaultOAuth2AccessToken() {
- this((String) null);
- }
+ /**
+ * Private constructor for JPA and other serialization tools.
+ */
+ @SuppressWarnings("unused")
+ private DefaultOAuth2AccessToken() {
+ this((String) null);
+ }
- /**
- * Copy constructor for access token.
- *
- * @param accessToken
- */
- public DefaultOAuth2AccessToken(OAuth2AccessToken accessToken) {
- this(accessToken.getValue());
- setAdditionalInformation(accessToken.getAdditionalInformation());
- setRefreshToken(accessToken.getRefreshToken());
- setExpiration(accessToken.getExpiration());
- setScope(accessToken.getScope());
- setTokenType(accessToken.getTokenType());
- }
+ /**
+ * Copy constructor for access token.
+ *
+ * @param accessToken
+ */
+ public DefaultOAuth2AccessToken(OAuth2AccessToken accessToken) {
+ this(accessToken.getValue());
+ setAdditionalInformation(accessToken.getAdditionalInformation());
+ setRefreshToken(accessToken.getRefreshToken());
+ setExpiration(accessToken.getExpiration());
+ setScope(accessToken.getScope());
+ setTokenType(accessToken.getTokenType());
+ }
- public void setValue(String value) {
- this.value = value;
- }
+ public void setValue(String value) {
+ this.value = value;
+ }
- /**
- * The token value.
- *
- * @return The token value.
- */
- public String getValue() {
- return value;
- }
+ /**
+ * The token value.
+ *
+ * @return The token value.
+ */
+ public String getValue() {
+ return value;
+ }
- public int getExpiresIn() {
- return expiration != null ? Long.valueOf((expiration.getTime() - System.currentTimeMillis()) / 1000L)
- .intValue() : 0;
- }
+ public int getExpiresIn() {
+ return expiration != null ? Long.valueOf((expiration.getTime() - System.currentTimeMillis()) / 1000L).intValue()
+ : 0;
+ }
- protected void setExpiresIn(int delta) {
- setExpiration(new Date(System.currentTimeMillis() + delta));
- }
+ protected void setExpiresIn(int delta) {
+ setExpiration(new Date(System.currentTimeMillis() + delta));
+ }
- /**
- * The instant the token expires.
- *
- * @return The instant the token expires.
- */
- public Date getExpiration() {
- return expiration;
- }
+ /**
+ * The instant the token expires.
+ *
+ * @return The instant the token expires.
+ */
+ public Date getExpiration() {
+ return expiration;
+ }
- /**
- * The instant the token expires.
- *
- * @param expiration The instant the token expires.
- */
- public void setExpiration(Date expiration) {
- this.expiration = expiration;
- }
+ /**
+ * The instant the token expires.
+ *
+ * @param expiration The instant the token expires.
+ */
+ public void setExpiration(Date expiration) {
+ this.expiration = expiration;
+ }
- /**
- * Convenience method for checking expiration
- *
- * @return true if the expiration is befor ethe current time
- */
- public boolean isExpired() {
- return expiration != null && expiration.before(new Date());
- }
+ /**
+ * Convenience method for checking expiration
+ *
+ * @return true if the expiration is befor ethe current time
+ */
+ public boolean isExpired() {
+ return expiration != null && expiration.before(new Date());
+ }
- /**
- * The token type, as introduced in draft 11 of the OAuth 2 spec. The spec doesn't define (yet) that the valid token
- * types are, but says it's required so the default will just be "undefined".
- *
- * @return The token type, as introduced in draft 11 of the OAuth 2 spec.
- */
- public String getTokenType() {
- return tokenType;
- }
+ /**
+ * The token type, as introduced in draft 11 of the OAuth 2 spec. The spec
+ * doesn't define (yet) that the valid token types are, but says it's required
+ * so the default will just be "undefined".
+ *
+ * @return The token type, as introduced in draft 11 of the OAuth 2 spec.
+ */
+ public String getTokenType() {
+ return tokenType;
+ }
- /**
- * The token type, as introduced in draft 11 of the OAuth 2 spec.
- *
- * @param tokenType The token type, as introduced in draft 11 of the OAuth 2 spec.
- */
- public void setTokenType(String tokenType) {
- this.tokenType = tokenType;
- }
+ /**
+ * The token type, as introduced in draft 11 of the OAuth 2 spec.
+ *
+ * @param tokenType The token type, as introduced in draft 11 of the OAuth 2
+ * spec.
+ */
+ public void setTokenType(String tokenType) {
+ this.tokenType = tokenType;
+ }
- /**
- * The refresh token associated with the access token, if any.
- *
- * @return The refresh token associated with the access token, if any.
- */
- public OAuth2RefreshToken getRefreshToken() {
- return refreshToken;
- }
+ /**
+ * The refresh token associated with the access token, if any.
+ *
+ * @return The refresh token associated with the access token, if any.
+ */
+ public OAuth2RefreshToken getRefreshToken() {
+ return refreshToken;
+ }
- /**
- * The refresh token associated with the access token, if any.
- *
- * @param refreshToken The refresh token associated with the access token, if any.
- */
- public void setRefreshToken(OAuth2RefreshToken refreshToken) {
- this.refreshToken = refreshToken;
- }
+ /**
+ * The refresh token associated with the access token, if any.
+ *
+ * @param refreshToken The refresh token associated with the access token, if
+ * any.
+ */
+ public void setRefreshToken(OAuth2RefreshToken refreshToken) {
+ this.refreshToken = refreshToken;
+ }
- /**
- * The scope of the token.
- *
- * @return The scope of the token.
- */
- public Set getScope() {
- return scope;
- }
+ /**
+ * The scope of the token.
+ *
+ * @return The scope of the token.
+ */
+ public Set getScope() {
+ return scope;
+ }
- /**
- * The scope of the token.
- *
- * @param scope The scope of the token.
- */
- public void setScope(Set scope) {
- this.scope = scope;
- }
+ /**
+ * The scope of the token.
+ *
+ * @param scope The scope of the token.
+ */
+ public void setScope(Set scope) {
+ this.scope = scope;
+ }
- @Override
- public boolean equals(Object obj) {
- return obj != null && toString().equals(obj.toString());
- }
+ @Override
+ public boolean equals(Object obj) {
+ return obj != null && toString().equals(obj.toString());
+ }
- @Override
- public int hashCode() {
- return toString().hashCode();
- }
+ @Override
+ public int hashCode() {
+ return toString().hashCode();
+ }
- @Override
- public String toString() {
- return String.valueOf(getValue());
- }
+ @Override
+ public String toString() {
+ return String.valueOf(getValue());
+ }
- public static OAuth2AccessToken valueOf(Map tokenParams) {
- DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken(tokenParams.get(ACCESS_TOKEN));
+ public static OAuth2AccessToken valueOf(Map tokenParams) {
+ DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken(tokenParams.get(ACCESS_TOKEN));
- if (tokenParams.containsKey(EXPIRES_IN)) {
- long expiration = 0;
- try {
- expiration = Long.parseLong(String.valueOf(tokenParams.get(EXPIRES_IN)));
- }
- catch (NumberFormatException e) {
- // fall through...
- }
- token.setExpiration(new Date(System.currentTimeMillis() + (expiration * 1000L)));
- }
+ if (tokenParams.containsKey(EXPIRES_IN)) {
+ long expiration = 0;
+ try {
+ expiration = Long.parseLong(String.valueOf(tokenParams.get(EXPIRES_IN)));
+ } catch (NumberFormatException e) {
+ // fall through...
+ }
+ token.setExpiration(new Date(System.currentTimeMillis() + (expiration * 1000L)));
+ }
- if (tokenParams.containsKey(REFRESH_TOKEN)) {
- String refresh = tokenParams.get(REFRESH_TOKEN);
- DefaultOAuth2RefreshToken refreshToken = new DefaultOAuth2RefreshToken(refresh);
- token.setRefreshToken(refreshToken);
- }
+ if (tokenParams.containsKey(REFRESH_TOKEN)) {
+ String refresh = tokenParams.get(REFRESH_TOKEN);
+ DefaultOAuth2RefreshToken refreshToken = new DefaultOAuth2RefreshToken(refresh);
+ token.setRefreshToken(refreshToken);
+ }
- if (tokenParams.containsKey(SCOPE)) {
- Set scope = new TreeSet();
- for (StringTokenizer tokenizer = new StringTokenizer(tokenParams.get(SCOPE), " ,"); tokenizer
- .hasMoreTokens();) {
- scope.add(tokenizer.nextToken());
- }
- token.setScope(scope);
- }
+ if (tokenParams.containsKey(SCOPE)) {
+ Set scope = new TreeSet();
+ for (StringTokenizer tokenizer = new StringTokenizer(tokenParams.get(SCOPE), " ,"); tokenizer
+ .hasMoreTokens();) {
+ scope.add(tokenizer.nextToken());
+ }
+ token.setScope(scope);
+ }
- if (tokenParams.containsKey(TOKEN_TYPE)) {
- token.setTokenType(tokenParams.get(TOKEN_TYPE));
- }
+ if (tokenParams.containsKey(TOKEN_TYPE)) {
+ token.setTokenType(tokenParams.get(TOKEN_TYPE));
+ }
- return token;
- }
+ return token;
+ }
- /**
- * Additional information that token granters would like to add to the token, e.g. to support new token types.
- *
- * @return the additional information (default empty)
- */
- public Map getAdditionalInformation() {
- return additionalInformation;
- }
+ /**
+ * Additional information that token granters would like to add to the token,
+ * e.g. to support new token types.
+ *
+ * @return the additional information (default empty)
+ */
+ public Map getAdditionalInformation() {
+ return additionalInformation;
+ }
- /**
- * Additional information that token granters would like to add to the token, e.g. to support new token types. If
- * the values in the map are primitive then remote communication is going to always work. It should also be safe to
- * use maps (nested if desired), or something that is explicitly serializable by Jackson.
- *
- * @param additionalInformation the additional information to set
- */
- public void setAdditionalInformation(Map additionalInformation) {
- this.additionalInformation = new LinkedHashMap(additionalInformation);
- }
+ /**
+ * Additional information that token granters would like to add to the token,
+ * e.g. to support new token types. If the values in the map are primitive then
+ * remote communication is going to always work. It should also be safe to use
+ * maps (nested if desired), or something that is explicitly serializable by
+ * Jackson.
+ *
+ * @param additionalInformation the additional information to set
+ */
+ public void setAdditionalInformation(Map additionalInformation) {
+ this.additionalInformation = new LinkedHashMap(additionalInformation);
+ }
}
diff --git a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2RefreshToken.java b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2RefreshToken.java
index 91a8e2099..1f8fd055d 100644
--- a/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2RefreshToken.java
+++ b/maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/DefaultOAuth2RefreshToken.java
@@ -1,10 +1,8 @@
package org.maxkey.authz.oauth2.common;
-import java.io.Serializable;
-
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
-
+import java.io.Serializable;
/**
* An OAuth 2 refresh token.
@@ -14,59 +12,59 @@ import com.fasterxml.jackson.annotation.JsonValue;
*/
public class DefaultOAuth2RefreshToken implements Serializable, OAuth2RefreshToken {
- private static final long serialVersionUID = 8349970621900575838L;
+ private static final long serialVersionUID = 8349970621900575838L;
- private String value;
+ private String value;
- /**
- * Create a new refresh token.
- */
- @JsonCreator
- public DefaultOAuth2RefreshToken(String value) {
- this.value = value;
- }
-
- /**
- * Default constructor for JPA and other serialization tools.
- */
- @SuppressWarnings("unused")
- private DefaultOAuth2RefreshToken() {
- this(null);
- }
+ /**
+ * Create a new refresh token.
+ */
+ @JsonCreator
+ public DefaultOAuth2RefreshToken(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Default constructor for JPA and other serialization tools.
+ */
+ @SuppressWarnings("unused")
+ private DefaultOAuth2RefreshToken() {
+ this(null);
+ }
- /* (non-Javadoc)
- * @see org.springframework.security.oauth2.common.IFOO#getValue()
- */
- @JsonValue
- public String getValue() {
- return value;
- }
+ /* (non-Javadoc)
+ * @see org.springframework.security.oauth2.common.IFOO#getValue()
+ */
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
- @Override
- public String toString() {
- return getValue();
- }
+ @Override
+ public String toString() {
+ return getValue();
+ }
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof DefaultOAuth2RefreshToken)) {
- return false;
- }
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof DefaultOAuth2RefreshToken)) {
+ return false;
+ }
- DefaultOAuth2RefreshToken that = (DefaultOAuth2RefreshToken) o;
+ DefaultOAuth2RefreshToken that = (DefaultOAuth2RefreshToken) o;
- if (value != null ? !value.equals(that.value) : that.value != null) {
- return false;
- }
+ if (value != null ? !value.equals(that.value) : that.value != null) {
+ return false;
+ }
- return true;
- }
+ return true;
+ }
- @Override
- public int hashCode() {
- return value != null ? value.hashCode() : 0;
- }
+ @Override
+ public int hashCode() {
+ return value != null ? value.hashCode() : 0;
+ }
}
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 09271f618..6dc1768d4 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyApplication.java
@@ -1,9 +1,7 @@
package org.maxkey;
import java.util.Date;
-
import javax.servlet.ServletException;
-
import org.apache.ibatis.io.VFS;
import org.apache.mybatis.jpa.SpringBootVFS;
import org.maxkey.web.InitApplicationContext;
@@ -17,25 +15,30 @@ import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class MaxKeyApplication extends SpringBootServletInitializer {
- private static final Logger _logger = LoggerFactory.getLogger(MaxKeyApplication.class);
+ private static final Logger _logger = LoggerFactory.getLogger(MaxKeyApplication.class);
- public static void main(String[] args) {
- VFS.addImplClass(SpringBootVFS.class);
- ConfigurableApplicationContext applicationContext =SpringApplication.run(MaxKeyApplication.class, args);
- InitApplicationContext initWebContext=new InitApplicationContext(applicationContext);
- try {
- initWebContext.init(null);
- } catch (ServletException e) {
- e.printStackTrace();
- _logger.error("",e);
- }
- _logger.info("MaxKey at "+new Date(applicationContext.getStartupDate()));
- _logger.info("MaxKey Server Port "+applicationContext.getBean(MaxKeyConfig.class).getPort());
- _logger.info("MaxKey started.");
- }
+ /**
+ * @param args args
+ */
+ public static void main(String[] args) {
+ VFS.addImplClass(SpringBootVFS.class);
+ ConfigurableApplicationContext applicationContext =
+ SpringApplication.run(MaxKeyApplication.class, args);
+ InitApplicationContext initWebContext = new InitApplicationContext(applicationContext);
+ try {
+ initWebContext.init(null);
+ } catch (ServletException e) {
+ e.printStackTrace();
+ _logger.error("", e);
+ }
+ _logger.info("MaxKey at " + new Date(applicationContext.getStartupDate()));
+ _logger.info("MaxKey Server Port "
+ + applicationContext.getBean(MaxKeyConfig.class).getPort());
+ _logger.info("MaxKey started.");
+ }
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(MaxKeyApplication.class);
- }
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+ return application.sources(MaxKeyApplication.class);
+ }
}
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 4dddc602f..6b5983406 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyConfig.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/MaxKeyConfig.java
@@ -18,21 +18,21 @@ import org.springframework.context.annotation.PropertySource;
import org.springframework.http.HttpStatus;
@Configuration
-@ImportResource(locations={"classpath:spring/maxkey.xml"})
+@ImportResource(locations = { "classpath:spring/maxkey.xml" })
@PropertySource("classpath:/application.properties")
public class MaxKeyConfig {
- @Value("${server.port:8080}")
+ @Value("${server.port:8080}")
private int port;
- public int getPort() {
- return port;
- }
+ public int getPort() {
+ return port;
+ }
- public void setPort(int port) {
- this.port = port;
- }
-
- @Bean
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ @Bean
public FilterRegistrationBean TokenEndpointAuthenticationFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new TokenEndpointAuthenticationFilter());
@@ -41,52 +41,50 @@ public class MaxKeyConfig {
registration.setOrder(1);
return registration;
}
-
- /**
- * 配置默认错误页面(仅用于内嵌tomcat启动时)
- * 使用这种方式,在打包为war后不起作用
+
+ /**
+ * 配置默认错误页面(仅用于内嵌tomcat启动时) 使用这种方式,在打包为war后不起作用
*
* @return
- */
- @Bean
- public WebServerFactoryCustomizer webServerFactoryCustomizer() {
- return new WebServerFactoryCustomizer() {
+ */
+ @Bean
+ public WebServerFactoryCustomizer webServerFactoryCustomizer() {
+ return new WebServerFactoryCustomizer() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
- ErrorPage errorPage400 = new ErrorPage(HttpStatus.BAD_REQUEST,"/exception/error/400");
- ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND,"/exception/error/404");
- ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,"/exception/error/500");
- factory.addErrorPages(errorPage400, errorPage404,errorPage500);
-
+ ErrorPage errorPage400 = new ErrorPage(HttpStatus.BAD_REQUEST, "/exception/error/400");
+ ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/exception/error/404");
+ ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/exception/error/500");
+ factory.addErrorPages(errorPage400, errorPage404, errorPage500);
}
};
- }
-
- @Bean
- public Connector connector() {
- Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
- connector.setScheme("http");
- connector.setPort(80);
- connector.setSecure(false);
- connector.setRedirectPort(443);
- return connector;
- }
+ }
- @Bean
- public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
- TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
- @Override
- protected void postProcessContext(Context context) {
- SecurityConstraint securityConstraint = new SecurityConstraint();
- securityConstraint.setUserConstraint("CONFIDENTIAL");
- SecurityCollection collection = new SecurityCollection();
- collection.addPattern("/*");
- securityConstraint.addCollection(collection);
- context.addConstraint(securityConstraint);
- }
- };
- tomcat.addAdditionalTomcatConnectors(connector);
- return tomcat;
- }
+ @Bean
+ public Connector connector() {
+ Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
+ connector.setScheme("http");
+ connector.setPort(80);
+ connector.setSecure(false);
+ connector.setRedirectPort(443);
+ return connector;
+ }
+
+ @Bean
+ public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
+ TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
+ @Override
+ protected void postProcessContext(Context context) {
+ SecurityConstraint securityConstraint = new SecurityConstraint();
+ securityConstraint.setUserConstraint("CONFIDENTIAL");
+ SecurityCollection collection = new SecurityCollection();
+ collection.addPattern("/*");
+ securityConstraint.addCollection(collection);
+ context.addConstraint(securityConstraint);
+ }
+ };
+ tomcat.addAdditionalTomcatConnectors(connector);
+ return tomcat;
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java
index a688f8dfc..ec2ddaaef 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/AppListController.java
@@ -1,7 +1,6 @@
package org.maxkey.web.contorller;
import java.util.List;
-
import org.maxkey.constants.OPERATEMESSAGE;
import org.maxkey.constants.PROTOCOLS;
import org.maxkey.crypto.ReciprocalUtils;
@@ -27,217 +26,233 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
+/**
+ * AppListController.
+ *
+ * @author Administrator
+ *
+ */
@Controller
-public class AppListController{
- final static Logger _logger = LoggerFactory.getLogger(AppListController.class);
-
- @Autowired
- private UserInfoService userInfoService;
-
- @Autowired
- protected JdbcTemplate jdbcTemplate;
-
- @Autowired
- MyAppsListService myAppsListService;
-
- @Autowired
- AccountsService appUsersService;
-
- @Autowired
- AppsService appsService;
-
- @RequestMapping(value={"/appList"})
- public ModelAndView appList(@RequestParam(value="gridList",required = false) String gridList) {
- ModelAndView modelAndView=new ModelAndView("main/appList");
-
- if(gridList!=null&&!gridList.equals("")){
- int intGridList=Integer.parseInt(gridList);
- jdbcTemplate.update("UPDATE USERINFO SET GRIDLIST = ? WHERE ID = ?",
- intGridList,WebContext.getUserInfo().getId());
- WebContext.getUserInfo().setGridList(intGridList);
- }
- modelAndView.addObject("appList", queryAccessableApps());
- return modelAndView;
- }
-
-
-
- @RequestMapping(value={"/appConfigList"})
- public ModelAndView appConfigList() {
- ModelAndView modelAndView=new ModelAndView("main/appConfigList");
- modelAndView.addObject("appList", queryAccessableApps());
- return modelAndView;
- }
-
-
- private List queryAccessableApps(){
- UserApps userApplications=new UserApps();
- userApplications.setUsername(WebContext.getUserInfo().getUsername());
-
- List appList=myAppsListService.queryMyApps(userApplications);
- for (UserApps app : appList){
- WebContext.setAttribute(app.getId(), app.getIcon());
- }
-
- return appList;
- }
+public class AppListController {
+ static final Logger _logger = LoggerFactory.getLogger(AppListController.class);
- @RequestMapping(value={"/forward/appProtectedConfig/{protocol}/{credential}/{appId}"})
- public ModelAndView forwardAppLoginConfig(
- @PathVariable("protocol") String protocol,
- @PathVariable("credential") int credential,
- @PathVariable("appId") String appId){
- ModelAndView modelAndView=new ModelAndView("main/appProtectedConfig");
+ @Autowired
+ private UserInfoService userInfoService;
- UserInfo userInfo=WebContext.getUserInfo();
-
- if(userInfo.getProtectedAppsMap().get(appId)!=null){
- modelAndView.addObject("protectedappId",true);
- }else{
- modelAndView.addObject("protectedappId",false);
- }
- modelAndView.addObject("uid",userInfo.getId());
- modelAndView.addObject("appId",appId);
- modelAndView.addObject("protocol",protocol);
- modelAndView.addObject("credential",credential);
- return modelAndView;
-
- }
-
- @ResponseBody
- @RequestMapping(value={"/appProtectedConfig"})
- public Message appLoginConfig(
- @RequestParam("protocol") String protocol,
- @RequestParam("credential") int credential,
- @RequestParam("appId") String appId,
- @RequestParam("protectedappId") String protectedappId,
- @RequestParam("password") String password
- ){
+ @Autowired
+ protected JdbcTemplate jdbcTemplate;
- UserInfo userInfo=WebContext.getUserInfo();
- String userAppProtectedPassword=ReciprocalUtils.decoder(userInfo.getAppLoginPassword());
- if(userAppProtectedPassword.equals(password)){
-
- if(protectedappId.equalsIgnoreCase("YES")){
- if(userInfo.getProtectedApps()!=null&&userInfo.getProtectedApps().indexOf(appId)<0){
- userInfo.setProtectedApps(userInfo.getProtectedApps()+","+appId);
- if(userInfo.getProtectedAppsMap()!=null){
- userInfo.getProtectedAppsMap().put(appId, appId);
- }
- }else{
- userInfo.setProtectedApps(","+appId);
- }
- }else{
- if(userInfo.getProtectedApps()!=null&&userInfo.getProtectedApps().indexOf(appId)>-1){
- //userInfo.setSecondProtectedApps(userInfo.getSecondProtectedApps()+","+appId);
- String []protectedApps=userInfo.getProtectedApps().split(",");
- String protectedAppIds="";
- if(userInfo.getProtectedAppsMap()!=null){
- userInfo.getProtectedAppsMap().remove(appId);
- }
- for(String protectedAppId:protectedApps){
- if(protectedAppId.equalsIgnoreCase(appId)||protectedAppId.trim().equals(""))continue;
- protectedAppIds=protectedAppIds+","+protectedAppId;
- }
- userInfo.setProtectedApps(protectedAppIds);
- }
- }
-
- userInfoService.updateProtectedApps(userInfo);
- }else{
- return new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_ERROR),MessageType.error);
- }
-
- return new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_SUCCESS),MessageType.success);
- }
-
-
- @RequestMapping(value={"/forward/appUserConfig/{protocol}/{credential}/{appId}"})
- public ModelAndView forwardAppUserConfig(
- @PathVariable("protocol") String protocol,
- @PathVariable("credential") int credential,
- @PathVariable("appId") String appId){
- ModelAndView modelAndView=new ModelAndView("main/appUserConfig");
- //modelAndView.addObject("appList",appList);
-
- Accounts appUsers=new Accounts();
- UserInfo userInfo=WebContext.getUserInfo();
- if(credential==Apps.CREDENTIALS.USER_DEFINED){
- appUsers=appUsersService.load(new Accounts(userInfo.getId(),appId));
- if(protocol.equalsIgnoreCase(PROTOCOLS.DESKTOP)||
- protocol.equalsIgnoreCase(PROTOCOLS.FORMBASED)||
- protocol.equalsIgnoreCase(PROTOCOLS.BASIC)||
- protocol.equalsIgnoreCase(PROTOCOLS.EXTEND_API)
- ){
-
- modelAndView.addObject("username",true);
- modelAndView.addObject("password",true);
- }else if(protocol.equalsIgnoreCase(PROTOCOLS.SAML20)
- ){
- modelAndView.addObject("username",true);
- modelAndView.addObject("password",false);
- }else{
- modelAndView.addObject("username",false);
- modelAndView.addObject("password",false);
- }
- if(appUsers!=null){
- modelAndView.addObject("identity_username",appUsers.getRelatedUsername());
- modelAndView.addObject("identity_password",ReciprocalUtils.decoder(appUsers.getRelatedPassword()));
- }else{
- modelAndView.addObject("identity_username","");
- modelAndView.addObject("identity_password","");
- }
- }else{
- modelAndView.addObject("username",false);
- modelAndView.addObject("password",false);
- }
-
- modelAndView.addObject("uid",userInfo.getId());
- modelAndView.addObject("appId",appId);
- modelAndView.addObject("protocol",protocol);
- modelAndView.addObject("credential",credential);
- return modelAndView;
-
- }
-
- @ResponseBody
- @RequestMapping(value={"/appUserConfig"})
- public Message appUserConfig(
- @RequestParam("protocol") String protocol,
- @RequestParam("credential") int credential,
- @RequestParam("appId") String appId,
- @RequestParam("identity_username") String identity_username,
- @RequestParam("identity_password") String identity_password
- ){
-
- Apps app=appsService.get(appId);
- UserInfo userInfo=WebContext.getUserInfo();
-
- Accounts appUsers=new Accounts();
- appUsers.setAppId(appId);
- appUsers.setUid(userInfo.getId());
-
- if(identity_password!=null&&!identity_password.equals("")&&credential==Apps.CREDENTIALS.USER_DEFINED){
- appUsers=appUsersService.load(new Accounts(userInfo.getId(),appId));
- if(appUsers==null){
- appUsers=new Accounts();
- appUsers.setId(appUsers.generateId());
- appUsers.setAppId(appId);
- appUsers.setAppName(app.getName());
- appUsers.setUid(userInfo.getId());
- appUsers.setUsername(userInfo.getUsername());
- appUsers.setDisplayName(userInfo.getDisplayName());
-
- appUsers.setRelatedUsername(identity_username);
- appUsers.setRelatedPassword(ReciprocalUtils.encode(identity_password));
- appUsersService.insert(appUsers);
- }else{
- appUsers.setRelatedUsername(identity_username);
- appUsers.setRelatedPassword(ReciprocalUtils.encode(identity_password));
- appUsersService.update(appUsers);
- }
- }
-
- return new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_SUCCESS),MessageType.success);
- }
+ @Autowired
+ MyAppsListService myAppsListService;
+
+ @Autowired
+ AccountsService appUsersService;
+
+ @Autowired
+ AppsService appsService;
+
+ /**
+ * gridList.
+ * @param gridList 类型
+ * @return
+ */
+ @RequestMapping(value = { "/appList" })
+ public ModelAndView appList(
+ @RequestParam(value = "gridList", required = false) String gridList) {
+ ModelAndView modelAndView = new ModelAndView("main/appList");
+
+ if (gridList != null && !gridList.equals("")) {
+ int intGridList = Integer.parseInt(gridList);
+ jdbcTemplate.update("UPDATE USERINFO SET GRIDLIST = ? WHERE ID = ?", intGridList,
+ WebContext.getUserInfo().getId());
+ WebContext.getUserInfo().setGridList(intGridList);
+ }
+ modelAndView.addObject("appList", queryAccessableApps());
+ return modelAndView;
+ }
+
+ @RequestMapping(value = { "/appConfigList" })
+ public ModelAndView appConfigList() {
+ ModelAndView modelAndView = new ModelAndView("main/appConfigList");
+ modelAndView.addObject("appList", queryAccessableApps());
+ return modelAndView;
+ }
+
+ private List queryAccessableApps() {
+ UserApps userApplications = new UserApps();
+ userApplications.setUsername(WebContext.getUserInfo().getUsername());
+
+ List appList = myAppsListService.queryMyApps(userApplications);
+ for (UserApps app : appList) {
+ WebContext.setAttribute(app.getId(), app.getIcon());
+ }
+
+ return appList;
+ }
+
+ /**
+ * forwardAppLoginConfig.
+ * @param protocol protocol
+ * @param credential credential
+ * @param appId appId
+ * @return
+ */
+ @RequestMapping(value = { "/forward/appProtectedConfig/{protocol}/{credential}/{appId}" })
+ public ModelAndView forwardAppLoginConfig(@PathVariable("protocol") String protocol,
+ @PathVariable("credential") int credential, @PathVariable("appId") String appId) {
+ ModelAndView modelAndView = new ModelAndView("main/appProtectedConfig");
+
+ UserInfo userInfo = WebContext.getUserInfo();
+
+ if (userInfo.getProtectedAppsMap().get(appId) != null) {
+ modelAndView.addObject("protectedappId", true);
+ } else {
+ modelAndView.addObject("protectedappId", false);
+ }
+ modelAndView.addObject("uid", userInfo.getId());
+ modelAndView.addObject("appId", appId);
+ modelAndView.addObject("protocol", protocol);
+ modelAndView.addObject("credential", credential);
+ return modelAndView;
+
+ }
+
+ /**
+ * appLoginConfig.
+ * @param protocol protocol
+ * @param credential credential
+ * @param appId appId
+ * @param protectedappId protectedappId
+ * @param password password
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping(value = { "/appProtectedConfig" })
+ public Message appLoginConfig(
+ @RequestParam("protocol") String protocol,
+ @RequestParam("credential") int credential,
+ @RequestParam("appId") String appId,
+ @RequestParam("protectedappId") String protectedappId,
+ @RequestParam("password") String password) {
+
+ UserInfo userInfo = WebContext.getUserInfo();
+ String userAppProtectedPassword = ReciprocalUtils.decoder(userInfo.getAppLoginPassword());
+ if (userAppProtectedPassword.equals(password)) {
+
+ if (protectedappId.equalsIgnoreCase("YES")) {
+ if (userInfo.getProtectedApps() != null
+ && userInfo.getProtectedApps().indexOf(appId) < 0) {
+ userInfo.setProtectedApps(userInfo.getProtectedApps() + "," + appId);
+ if (userInfo.getProtectedAppsMap() != null) {
+ userInfo.getProtectedAppsMap().put(appId, appId);
+ }
+ } else {
+ userInfo.setProtectedApps("," + appId);
+ }
+ } else {
+ if (userInfo.getProtectedApps() != null
+ && userInfo.getProtectedApps().indexOf(appId) > -1) {
+ // userInfo.setSecondProtectedApps(userInfo.getSecondProtectedApps()+","+appId);
+ String[] protectedApps = userInfo.getProtectedApps().split(",");
+ String protectedAppIds = "";
+ if (userInfo.getProtectedAppsMap() != null) {
+ userInfo.getProtectedAppsMap().remove(appId);
+ }
+ for (String protectedAppId : protectedApps) {
+ if (protectedAppId.equalsIgnoreCase(appId)
+ || protectedAppId.trim().equals("")) {
+ continue;
+ }
+ protectedAppIds = protectedAppIds + "," + protectedAppId;
+ }
+ userInfo.setProtectedApps(protectedAppIds);
+ }
+ }
+
+ userInfoService.updateProtectedApps(userInfo);
+ } else {
+ return new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_ERROR), MessageType.error);
+ }
+
+ return new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_SUCCESS), MessageType.success);
+ }
+
+ @RequestMapping(value = { "/forward/appUserConfig/{protocol}/{credential}/{appId}" })
+ public ModelAndView forwardAppUserConfig(@PathVariable("protocol") String protocol,
+ @PathVariable("credential") int credential, @PathVariable("appId") String appId) {
+ ModelAndView modelAndView = new ModelAndView("main/appUserConfig");
+ // modelAndView.addObject("appList",appList);
+
+ Accounts appUsers = new Accounts();
+ UserInfo userInfo = WebContext.getUserInfo();
+ if (credential == Apps.CREDENTIALS.USER_DEFINED) {
+ appUsers = appUsersService.load(new Accounts(userInfo.getId(), appId));
+ if (protocol.equalsIgnoreCase(PROTOCOLS.DESKTOP) || protocol.equalsIgnoreCase(PROTOCOLS.FORMBASED)
+ || protocol.equalsIgnoreCase(PROTOCOLS.BASIC) || protocol.equalsIgnoreCase(PROTOCOLS.EXTEND_API)) {
+
+ modelAndView.addObject("username", true);
+ modelAndView.addObject("password", true);
+ } else if (protocol.equalsIgnoreCase(PROTOCOLS.SAML20)) {
+ modelAndView.addObject("username", true);
+ modelAndView.addObject("password", false);
+ } else {
+ modelAndView.addObject("username", false);
+ modelAndView.addObject("password", false);
+ }
+ if (appUsers != null) {
+ modelAndView.addObject("identity_username", appUsers.getRelatedUsername());
+ modelAndView.addObject("identity_password", ReciprocalUtils.decoder(appUsers.getRelatedPassword()));
+ } else {
+ modelAndView.addObject("identity_username", "");
+ modelAndView.addObject("identity_password", "");
+ }
+ } else {
+ modelAndView.addObject("username", false);
+ modelAndView.addObject("password", false);
+ }
+
+ modelAndView.addObject("uid", userInfo.getId());
+ modelAndView.addObject("appId", appId);
+ modelAndView.addObject("protocol", protocol);
+ modelAndView.addObject("credential", credential);
+ return modelAndView;
+
+ }
+
+ @ResponseBody
+ @RequestMapping(value = { "/appUserConfig" })
+ public Message appUserConfig(@RequestParam("protocol") String protocol, @RequestParam("credential") int credential,
+ @RequestParam("appId") String appId, @RequestParam("identity_username") String identity_username,
+ @RequestParam("identity_password") String identity_password) {
+
+ Apps app = appsService.get(appId);
+ UserInfo userInfo = WebContext.getUserInfo();
+
+ Accounts appUsers = new Accounts();
+ appUsers.setAppId(appId);
+ appUsers.setUid(userInfo.getId());
+
+ if (identity_password != null && !identity_password.equals("") && credential == Apps.CREDENTIALS.USER_DEFINED) {
+ appUsers = appUsersService.load(new Accounts(userInfo.getId(), appId));
+ if (appUsers == null) {
+ appUsers = new Accounts();
+ appUsers.setId(appUsers.generateId());
+ appUsers.setAppId(appId);
+ appUsers.setAppName(app.getName());
+ appUsers.setUid(userInfo.getId());
+ appUsers.setUsername(userInfo.getUsername());
+ appUsers.setDisplayName(userInfo.getDisplayName());
+
+ appUsers.setRelatedUsername(identity_username);
+ appUsers.setRelatedPassword(ReciprocalUtils.encode(identity_password));
+ appUsersService.insert(appUsers);
+ } else {
+ appUsers.setRelatedUsername(identity_username);
+ appUsers.setRelatedPassword(ReciprocalUtils.encode(identity_password));
+ appUsersService.update(appUsers);
+ }
+ }
+
+ return new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_SUCCESS), MessageType.success);
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ForgotPasswordContorller.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ForgotPasswordContorller.java
index e55d40a60..b29e56198 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ForgotPasswordContorller.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ForgotPasswordContorller.java
@@ -19,120 +19,119 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
-
@Controller
-@RequestMapping(value={"/forgotpassword"})
+@RequestMapping(value = { "/forgotpassword" })
public class ForgotPasswordContorller {
- private static Logger _logger = LoggerFactory.getLogger(ForgotPasswordContorller.class);
-
- @Autowired
- ForgotPasswordService forgotPasswordService;
-
- @Autowired
- private UserInfoService userInfoService;
-
- @Autowired
- protected ApplicationConfig applicationConfig;
-
- @Autowired
- private PasswordEncoder passwordEncoder;
-
-
- @RequestMapping(value={"/forward"})
- public ModelAndView forwardreg() {
- _logger.debug("Registration /forgotpassword/forward.");
- return new ModelAndView("forgotpassword/forward");
- }
-
-
- @RequestMapping(value={"/email"})
- public ModelAndView email(@RequestParam String email) {
- _logger.debug("Registration /forgotpassword/email.");
- _logger.debug("email : "+email);
- UserInfo userInfo=forgotPasswordService.queryUserInfoByEmail(email);
- ModelAndView modelAndView=new ModelAndView("forgotpassword/email");
- modelAndView.addObject("emailsend", 0);
- modelAndView.addObject("email", email);
-
- if(userInfo!=null){
- ForgotPassword forgotPassword =new ForgotPassword();
- forgotPassword.setId(forgotPassword.generateId());
- forgotPassword.setEmail(email);
- forgotPassword.setUid(userInfo.getId());
- forgotPassword.setUsername(userInfo.getUsername());
- forgotPasswordService.insert(forgotPassword);
-
- HtmlEmail hemail = new HtmlEmail();
-
- try {
- hemail.setHostName(applicationConfig.getEmailConfig().getSmtpHost());
- hemail.setSmtpPort(applicationConfig.getEmailConfig().getPort());
- hemail.setAuthenticator(new DefaultAuthenticator(applicationConfig.getEmailConfig().getUsername(), applicationConfig.getEmailConfig().getPassword()));
-
- hemail.addTo(userInfo.getEmail(), userInfo.getNickName());
- hemail.setFrom(applicationConfig.getEmailConfig().getSenderMail(), "ConnSec");
- hemail.setSubject("ConnSec Cloud Identity & Access ReSet Password .");
-
- // set the html message
- String forgotPasswordUrl=WebContext.getHttpContextPath()+"/forgotpassword/resetpwd/"+forgotPassword.getId();
-
-
- // set the html message
- String emailText="";
- emailText+="Reset Password
";
- emailText+=" or copy "+forgotPasswordUrl+" to brower.";
- emailText+="";
-
- hemail.setHtmlMsg(emailText);
-
- // set the alternative message
- hemail.setTextMsg("Your email client does not support HTML messages");
-
- // send the email
- hemail.send();
- modelAndView.addObject("emailsend", 1);
- } catch (EmailException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return modelAndView ;
- }
-
- @RequestMapping(value={"/resetpwd/{id}"})
- public ModelAndView resetpwd(@PathVariable("id") String id) {
- _logger.debug("Registration /forgotpassword/resetpwd.");
- ForgotPassword forgotPassword=forgotPasswordService.get(id);
- ModelAndView mav=new ModelAndView("forgotpassword/resetpwd");
- if(forgotPassword!=null){
- mav.addObject("model", forgotPassword);
- }
-
- return mav;
- }
-
- @RequestMapping(value={"/setpassword/{id}"})
- public ModelAndView setPassWord(@PathVariable("id") String id,@RequestParam String password,@RequestParam String confirmpassword) {
- _logger.debug("forgotPassword /forgotPassword/pwdreseted.");
- ModelAndView modelAndView=new ModelAndView("forgotpassword/pwdreseted");
- if(password.equals(confirmpassword)){
- ForgotPassword forgotPassword=forgotPasswordService.get(id);
- if(forgotPassword!=null){
- UserInfo userInfo=new UserInfo();
- userInfo.setId(forgotPassword.getUid());
- userInfo.setPassword(password);
- userInfo.setDecipherable(password);
- userInfo.setUsername(forgotPassword.getUsername());
- userInfoService.changePassword(userInfo);
- forgotPasswordService.remove(id);
- modelAndView.addObject("pwdreseted", 1);
- }else{
- modelAndView.addObject("pwdreseted", 2);
- }
- }else{
- modelAndView.addObject("pwdreseted", 0);
- }
- return modelAndView;
- }
+ private static Logger _logger = LoggerFactory.getLogger(ForgotPasswordContorller.class);
+
+ @Autowired
+ ForgotPasswordService forgotPasswordService;
+
+ @Autowired
+ private UserInfoService userInfoService;
+
+ @Autowired
+ protected ApplicationConfig applicationConfig;
+
+ @Autowired
+ private PasswordEncoder passwordEncoder;
+
+ @RequestMapping(value = { "/forward" })
+ public ModelAndView forwardreg() {
+ _logger.debug("Registration /forgotpassword/forward.");
+ return new ModelAndView("forgotpassword/forward");
+ }
+
+ @RequestMapping(value = { "/email" })
+ public ModelAndView email(@RequestParam String email) {
+ _logger.debug("Registration /forgotpassword/email.");
+ _logger.debug("email : " + email);
+ UserInfo userInfo = forgotPasswordService.queryUserInfoByEmail(email);
+ ModelAndView modelAndView = new ModelAndView("forgotpassword/email");
+ modelAndView.addObject("emailsend", 0);
+ modelAndView.addObject("email", email);
+
+ if (userInfo != null) {
+ ForgotPassword forgotPassword = new ForgotPassword();
+ forgotPassword.setId(forgotPassword.generateId());
+ forgotPassword.setEmail(email);
+ forgotPassword.setUid(userInfo.getId());
+ forgotPassword.setUsername(userInfo.getUsername());
+ forgotPasswordService.insert(forgotPassword);
+
+ HtmlEmail hemail = new HtmlEmail();
+
+ try {
+ hemail.setHostName(applicationConfig.getEmailConfig().getSmtpHost());
+ hemail.setSmtpPort(applicationConfig.getEmailConfig().getPort());
+ hemail.setAuthenticator(new DefaultAuthenticator(applicationConfig.getEmailConfig().getUsername(),
+ applicationConfig.getEmailConfig().getPassword()));
+
+ hemail.addTo(userInfo.getEmail(), userInfo.getNickName());
+ hemail.setFrom(applicationConfig.getEmailConfig().getSenderMail(), "ConnSec");
+ hemail.setSubject("ConnSec Cloud Identity & Access ReSet Password .");
+
+ // set the html message
+ String forgotPasswordUrl = WebContext.getHttpContextPath() + "/forgotpassword/resetpwd/"
+ + forgotPassword.getId();
+
+ // set the html message
+ String emailText = "";
+ emailText += "Reset Password
";
+ emailText += " or copy " + forgotPasswordUrl + " to brower.";
+ emailText += "";
+
+ hemail.setHtmlMsg(emailText);
+
+ // set the alternative message
+ hemail.setTextMsg("Your email client does not support HTML messages");
+
+ // send the email
+ hemail.send();
+ modelAndView.addObject("emailsend", 1);
+ } catch (EmailException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ return modelAndView;
+ }
+
+ @RequestMapping(value = { "/resetpwd/{id}" })
+ public ModelAndView resetpwd(@PathVariable("id") String id) {
+ _logger.debug("Registration /forgotpassword/resetpwd.");
+ ForgotPassword forgotPassword = forgotPasswordService.get(id);
+ ModelAndView mav = new ModelAndView("forgotpassword/resetpwd");
+ if (forgotPassword != null) {
+ mav.addObject("model", forgotPassword);
+ }
+
+ return mav;
+ }
+
+ @RequestMapping(value = { "/setpassword/{id}" })
+ public ModelAndView setPassWord(@PathVariable("id") String id, @RequestParam String password,
+ @RequestParam String confirmpassword) {
+ _logger.debug("forgotPassword /forgotPassword/pwdreseted.");
+ ModelAndView modelAndView = new ModelAndView("forgotpassword/pwdreseted");
+ if (password.equals(confirmpassword)) {
+ ForgotPassword forgotPassword = forgotPasswordService.get(id);
+ if (forgotPassword != null) {
+ UserInfo userInfo = new UserInfo();
+ userInfo.setId(forgotPassword.getUid());
+ userInfo.setPassword(password);
+ userInfo.setDecipherable(password);
+ userInfo.setUsername(forgotPassword.getUsername());
+ userInfoService.changePassword(userInfo);
+ forgotPasswordService.remove(id);
+ modelAndView.addObject("pwdreseted", 1);
+ } else {
+ modelAndView.addObject("pwdreseted", 2);
+ }
+ } else {
+ modelAndView.addObject("pwdreseted", 0);
+ }
+ return modelAndView;
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/HistorysController.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/HistorysController.java
index 136b28710..c99c2b49d 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/HistorysController.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/HistorysController.java
@@ -2,13 +2,12 @@ package org.maxkey.web.contorller;
import java.text.SimpleDateFormat;
import java.util.Date;
-
import org.apache.mybatis.jpa.persistence.JpaPageResults;
import org.maxkey.dao.service.HistoryLoginAppsService;
import org.maxkey.dao.service.HistoryLoginService;
import org.maxkey.dao.service.HistoryLogsService;
-import org.maxkey.domain.HistoryLoginApps;
import org.maxkey.domain.HistoryLogin;
+import org.maxkey.domain.HistoryLoginApps;
import org.maxkey.domain.HistoryLogs;
import org.maxkey.util.DateUtils;
import org.maxkey.web.WebContext;
@@ -24,89 +23,89 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
- * 登录日志和操作日志查询
+ * 登录日志和操作日志查询.
*
* @author Crystal.sea
*
*/
@Controller
-@RequestMapping(value={"/historys"})
+@RequestMapping(value = { "/historys" })
public class HistorysController {
-final static Logger _logger = LoggerFactory.getLogger(HistorysController.class);
-
- @Autowired
- HistoryLoginService historyLoginService;
-
- @Autowired
- protected HistoryLoginAppsService historyLoginAppsService;
-
- @Autowired
- HistoryLogsService historyLogsService;
-
- @RequestMapping(value={"/logs"})
- public String List(){
- return "historys/logsList";
- }
-
-
- /**
- * 查询操作日志
- * @param logs
- * @return
- */
- @RequestMapping(value={"/logs/grid"})
- @ResponseBody
- public JpaPageResults logsDataGrid(@ModelAttribute("historyLogs") HistoryLogs historyLogs){
- _logger.debug("history/logs/grid/ logsGrid() "+historyLogs);
- return historyLogsService.queryPageResults(historyLogs);
- }
+ static final Logger _logger = LoggerFactory.getLogger(HistorysController.class);
- @RequestMapping(value={"/login"})
- public String authList(){
- return "historys/loginList";
- }
-
- /**
- * 查询登录日志
- * @param logsAuth
- * @return
- */
- @RequestMapping(value={"/login/grid"})
- @ResponseBody
- public JpaPageResults logAuthsGrid(@ModelAttribute("historyLogin") HistoryLogin historyLogin){
- _logger.debug("history/login/grid/ logsGrid() "+historyLogin);
- historyLogin.setUid(WebContext.getUserInfo().getId());
- return historyLoginService.queryPageResults(historyLogin);
- }
+ @Autowired
+ HistoryLoginService historyLoginService;
- @RequestMapping(value={"/loginApps"})
- public String loginAppHistoryList(){
- return "historys/loginAppsList";
- }
-
- /**
- * 查询单点登录日志
- * @param logsSso
- * @return
- */
- @RequestMapping(value={"/loginApps/grid"})
- @ResponseBody
- public JpaPageResults logsSsoGrid(@ModelAttribute("historyLoginApps") HistoryLoginApps historyLoginApps){
- _logger.debug("history/loginApps/grid/ logsGrid() "+historyLoginApps);
- historyLoginApps.setId(null);
-
- return historyLoginAppsService.queryPageResults(historyLoginApps);
+ @Autowired
+ protected HistoryLoginAppsService historyLoginAppsService;
- }
-
-
+ @Autowired
+ HistoryLogsService historyLogsService;
+ @RequestMapping(value = { "/logs" })
+ public String List() {
+ return "historys/logsList";
+ }
- @InitBinder
+ /**
+ * 查询操作日志.
+ *
+ * @param logs
+ * @return
+ */
+ @RequestMapping(value = { "/logs/grid" })
+ @ResponseBody
+ public JpaPageResults logsDataGrid(@ModelAttribute("historyLogs") HistoryLogs historyLogs) {
+ _logger.debug("history/logs/grid/ logsGrid() " + historyLogs);
+ return historyLogsService.queryPageResults(historyLogs);
+ }
+
+ @RequestMapping(value = { "/login" })
+ public String authList() {
+ return "historys/loginList";
+ }
+
+ /**
+ * 查询登录日志.
+ *
+ * @param logsAuth
+ * @return
+ */
+ @RequestMapping(value = { "/login/grid" })
+ @ResponseBody
+ public JpaPageResults logAuthsGrid(@ModelAttribute("historyLogin") HistoryLogin historyLogin) {
+ _logger.debug("history/login/grid/ logsGrid() " + historyLogin);
+ historyLogin.setUid(WebContext.getUserInfo().getId());
+ return historyLoginService.queryPageResults(historyLogin);
+ }
+
+ @RequestMapping(value = { "/loginApps" })
+ public String loginAppHistoryList() {
+ return "historys/loginAppsList";
+ }
+
+ /**
+ * 查询单点登录日志.
+ *
+ * @param logsSso
+ * @return
+ */
+ @RequestMapping(value = { "/loginApps/grid" })
+ @ResponseBody
+ public JpaPageResults logsSsoGrid(
+ @ModelAttribute("historyLoginApps") HistoryLoginApps historyLoginApps) {
+ _logger.debug("history/loginApps/grid/ logsGrid() " + historyLoginApps);
+ historyLoginApps.setId(null);
+
+ return historyLoginAppsService.queryPageResults(historyLoginApps);
+
+ }
+
+ @InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat(DateUtils.FORMAT_DATE_HH_MM_SS);
- dateFormat.setLenient(false);
+ dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/OneTimePasswordController.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/OneTimePasswordController.java
index bc40e2ce4..75b4902b2 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/OneTimePasswordController.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/OneTimePasswordController.java
@@ -2,7 +2,6 @@ package org.maxkey.web.contorller;
import java.awt.image.BufferedImage;
import java.util.UUID;
-
import org.apache.commons.codec.binary.Hex;
import org.maxkey.crypto.Base32Utils;
import org.maxkey.crypto.password.PasswordReciprocal;
@@ -11,8 +10,8 @@ import org.maxkey.crypto.password.opt.algorithm.OTPSecret;
import org.maxkey.dao.service.UserInfoService;
import org.maxkey.domain.UserInfo;
import org.maxkey.util.RQCodeUtils;
-import org.maxkey.web.WebContext;
import org.maxkey.web.ImageEndpoint;
+import org.maxkey.web.WebContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,127 +22,128 @@ import org.springframework.web.servlet.ModelAndView;
/**
+ * .
* @author Crystal.Sea
*
*/
@Controller
-@RequestMapping(value = { "/safe/otp" })
+@RequestMapping(value = { "/safe/otp" })
public class OneTimePasswordController {
- final static Logger _logger = LoggerFactory.getLogger(OneTimePasswordController.class);
+ static final Logger _logger = LoggerFactory.getLogger(OneTimePasswordController.class);
- @Autowired
- @Qualifier("userInfoService")
- private UserInfoService userInfoService;
-
- @Autowired
- @Qualifier("keyUriFormat")
- KeyUriFormat keyUriFormat;
+ @Autowired
+ @Qualifier("userInfoService")
+ private UserInfoService userInfoService;
- @Autowired
- @Qualifier("passwordReciprocal")
- PasswordReciprocal passwordReciprocal;
-
- @RequestMapping(value={"/timebased"})
- public ModelAndView timebased(){
- ModelAndView modelAndView=new ModelAndView("safe/timeBased");
- UserInfo userInfo=WebContext.getUserInfo();
- String sharedSecret=passwordReciprocal.decoder(userInfo.getSharedSecret());
- keyUriFormat.setSecret(sharedSecret);
- String otpauth=keyUriFormat.format(userInfo.getUsername());
- byte[] byteSharedSecret=Base32Utils.decode(sharedSecret);
- String hexSharedSecret=Hex.encodeHexString(byteSharedSecret);
- modelAndView.addObject("id", genRQCode(otpauth));
- modelAndView.addObject("userInfo", userInfo);
- modelAndView.addObject("format", keyUriFormat);
- modelAndView.addObject("sharedSecret", sharedSecret);
- modelAndView.addObject("hexSharedSecret", hexSharedSecret);
- return modelAndView;
- }
-
- @RequestMapping(value={"gen/timebased"})
- public ModelAndView gentimebased(){
- UserInfo userInfo=WebContext.getUserInfo();
- byte[] byteSharedSecret=OTPSecret.generate(keyUriFormat.getCrypto());
- String sharedSecret=Base32Utils.encode(byteSharedSecret);
- sharedSecret=passwordReciprocal.encode(sharedSecret);
- userInfo.setSharedSecret(sharedSecret);
- userInfoService.changeSharedSecret(userInfo);
- WebContext.setUserInfo(userInfo);
- return WebContext.redirect("/safe/otp/timebased");
- }
-
+ @Autowired
+ @Qualifier("keyUriFormat")
+ KeyUriFormat keyUriFormat;
- @RequestMapping(value={"/counterbased"})
- public ModelAndView counterbased(){
- ModelAndView modelAndView=new ModelAndView("safe/counterBased");
- UserInfo userInfo=WebContext.getUserInfo();
- String sharedSecret=passwordReciprocal.decoder(userInfo.getSharedSecret());
- keyUriFormat.setSecret(sharedSecret);
- keyUriFormat.setCounter(Long.parseLong(userInfo.getSharedCounter()));
- String otpauth=keyUriFormat.format(userInfo.getUsername());
-
- byte[] byteSharedSecret=Base32Utils.decode(sharedSecret);
- String hexSharedSecret=Hex.encodeHexString(byteSharedSecret);
- modelAndView.addObject("id", genRQCode(otpauth));
- modelAndView.addObject("userInfo", userInfo);
- modelAndView.addObject("format", keyUriFormat);
- modelAndView.addObject("sharedSecret", sharedSecret);
- modelAndView.addObject("hexSharedSecret", hexSharedSecret);
- return modelAndView;
-
- }
-
- @RequestMapping(value={"gen/counterbased"})
- public ModelAndView gencounterbased(){
- UserInfo userInfo=WebContext.getUserInfo();
- byte[] byteSharedSecret=OTPSecret.generate(keyUriFormat.getCrypto());
- String sharedSecret=Base32Utils.encode(byteSharedSecret);
- sharedSecret=passwordReciprocal.encode(sharedSecret);
- userInfo.setSharedSecret(sharedSecret);
- userInfo.setSharedCounter("0");
- userInfoService.changeSharedSecret(userInfo);
- WebContext.setUserInfo(userInfo);
- return WebContext.redirect("/safe/otp/counterbased");
- }
+ @Autowired
+ @Qualifier("passwordReciprocal")
+ PasswordReciprocal passwordReciprocal;
- @RequestMapping(value={"/hotp"})
- public ModelAndView hotp(){
- ModelAndView modelAndView=new ModelAndView("safe/hotp");
- UserInfo userInfo=WebContext.getUserInfo();
- String sharedSecret=passwordReciprocal.decoder(userInfo.getSharedSecret());
- keyUriFormat.setSecret(sharedSecret);
- keyUriFormat.setCounter(Long.parseLong(userInfo.getSharedCounter()));
- String otpauth=keyUriFormat.format(userInfo.getUsername());
- byte[] byteSharedSecret=Base32Utils.decode(sharedSecret);
- String hexSharedSecret=Hex.encodeHexString(byteSharedSecret);
- modelAndView.addObject("id", genRQCode(otpauth));
- modelAndView.addObject("userInfo", userInfo);
- modelAndView.addObject("format", keyUriFormat);
- modelAndView.addObject("sharedSecret", sharedSecret);
- modelAndView.addObject("hexSharedSecret", hexSharedSecret);
- return modelAndView;
-
- }
-
- @RequestMapping(value={"gen/hotp"})
- public ModelAndView genhotp(){
- UserInfo userInfo=WebContext.getUserInfo();
- byte[] byteSharedSecret=OTPSecret.generate(keyUriFormat.getCrypto());
- String sharedSecret=Base32Utils.encode(byteSharedSecret);
- sharedSecret=passwordReciprocal.encode(sharedSecret);
- userInfo.setSharedSecret(sharedSecret);
- userInfo.setSharedCounter("0");
- userInfoService.changeSharedSecret(userInfo);
- WebContext.setUserInfo(userInfo);
- return WebContext.redirect("/safe/otp/hotp");
- }
-
-
- public String genRQCode(String otpauth){
- BufferedImage bufferedImage = RQCodeUtils.write2BufferedImage(otpauth, "gif", 300, 300);
- byte[] imageByte=ImageEndpoint.bufferedImage2Byte(bufferedImage);
- String uuid=UUID.randomUUID().toString().toLowerCase();
- WebContext.getSession().setAttribute(uuid, imageByte);
- return uuid;
- }
+ @RequestMapping(value = {"/timebased"})
+ public ModelAndView timebased() {
+ ModelAndView modelAndView = new ModelAndView("safe/timeBased");
+ UserInfo userInfo = WebContext.getUserInfo();
+ String sharedSecret = passwordReciprocal.decoder(userInfo.getSharedSecret());
+ keyUriFormat.setSecret(sharedSecret);
+ String otpauth = keyUriFormat.format(userInfo.getUsername());
+ byte[] byteSharedSecret = Base32Utils.decode(sharedSecret);
+ String hexSharedSecret = Hex.encodeHexString(byteSharedSecret);
+ modelAndView.addObject("id", genRqCode(otpauth));
+ modelAndView.addObject("userInfo", userInfo);
+ modelAndView.addObject("format", keyUriFormat);
+ modelAndView.addObject("sharedSecret", sharedSecret);
+ modelAndView.addObject("hexSharedSecret", hexSharedSecret);
+ return modelAndView;
+ }
+
+ @RequestMapping(value = {"gen/timebased"})
+ public ModelAndView gentimebased() {
+ UserInfo userInfo = WebContext.getUserInfo();
+ byte[] byteSharedSecret = OTPSecret.generate(keyUriFormat.getCrypto());
+ String sharedSecret = Base32Utils.encode(byteSharedSecret);
+ sharedSecret = passwordReciprocal.encode(sharedSecret);
+ userInfo.setSharedSecret(sharedSecret);
+ userInfoService.changeSharedSecret(userInfo);
+ WebContext.setUserInfo(userInfo);
+ return WebContext.redirect("/safe/otp/timebased");
+ }
+
+
+ @RequestMapping(value = {"/counterbased"})
+ public ModelAndView counterbased() {
+ ModelAndView modelAndView = new ModelAndView("safe/counterBased");
+ UserInfo userInfo = WebContext.getUserInfo();
+ String sharedSecret = passwordReciprocal.decoder(userInfo.getSharedSecret());
+ keyUriFormat.setSecret(sharedSecret);
+ keyUriFormat.setCounter(Long.parseLong(userInfo.getSharedCounter()));
+ String otpauth = keyUriFormat.format(userInfo.getUsername());
+
+ byte[] byteSharedSecret = Base32Utils.decode(sharedSecret);
+ String hexSharedSecret = Hex.encodeHexString(byteSharedSecret);
+ modelAndView.addObject("id", genRqCode(otpauth));
+ modelAndView.addObject("userInfo", userInfo);
+ modelAndView.addObject("format", keyUriFormat);
+ modelAndView.addObject("sharedSecret", sharedSecret);
+ modelAndView.addObject("hexSharedSecret", hexSharedSecret);
+ return modelAndView;
+
+ }
+
+ @RequestMapping(value = {"gen/counterbased"})
+ public ModelAndView gencounterbased() {
+ UserInfo userInfo = WebContext.getUserInfo();
+ byte[] byteSharedSecret = OTPSecret.generate(keyUriFormat.getCrypto());
+ String sharedSecret = Base32Utils.encode(byteSharedSecret);
+ sharedSecret = passwordReciprocal.encode(sharedSecret);
+ userInfo.setSharedSecret(sharedSecret);
+ userInfo.setSharedCounter("0");
+ userInfoService.changeSharedSecret(userInfo);
+ WebContext.setUserInfo(userInfo);
+ return WebContext.redirect("/safe/otp/counterbased");
+ }
+
+ @RequestMapping(value = {"/hotp"})
+ public ModelAndView hotp() {
+ ModelAndView modelAndView = new ModelAndView("safe/hotp");
+ UserInfo userInfo = WebContext.getUserInfo();
+ String sharedSecret = passwordReciprocal.decoder(userInfo.getSharedSecret());
+ keyUriFormat.setSecret(sharedSecret);
+ keyUriFormat.setCounter(Long.parseLong(userInfo.getSharedCounter()));
+ String otpauth = keyUriFormat.format(userInfo.getUsername());
+ byte[] byteSharedSecret = Base32Utils.decode(sharedSecret);
+ String hexSharedSecret = Hex.encodeHexString(byteSharedSecret);
+ modelAndView.addObject("id", genRqCode(otpauth));
+ modelAndView.addObject("userInfo", userInfo);
+ modelAndView.addObject("format", keyUriFormat);
+ modelAndView.addObject("sharedSecret", sharedSecret);
+ modelAndView.addObject("hexSharedSecret", hexSharedSecret);
+ return modelAndView;
+
+ }
+
+ @RequestMapping(value = {"gen/hotp"})
+ public ModelAndView genhotp() {
+ UserInfo userInfo = WebContext.getUserInfo();
+ byte[] byteSharedSecret = OTPSecret.generate(keyUriFormat.getCrypto());
+ String sharedSecret = Base32Utils.encode(byteSharedSecret);
+ sharedSecret = passwordReciprocal.encode(sharedSecret);
+ userInfo.setSharedSecret(sharedSecret);
+ userInfo.setSharedCounter("0");
+ userInfoService.changeSharedSecret(userInfo);
+ WebContext.setUserInfo(userInfo);
+ return WebContext.redirect("/safe/otp/hotp");
+ }
+
+
+ public String genRqCode(String otpauth) {
+ BufferedImage bufferedImage = RQCodeUtils.write2BufferedImage(otpauth, "gif", 300, 300);
+ byte[] imageByte = ImageEndpoint.bufferedImage2Byte(bufferedImage);
+ String uuid = UUID.randomUUID().toString().toLowerCase();
+ WebContext.getSession().setAttribute(uuid, imageByte);
+ return uuid;
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java
index 55777b9f5..aa0c0c29d 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/contorller/ProfileController.java
@@ -1,7 +1,6 @@
package org.maxkey.web.contorller;
import javax.validation.Valid;
-
import org.maxkey.constants.OPERATEMESSAGE;
import org.maxkey.dao.service.MyProfileService;
import org.maxkey.dao.service.UserInfoService;
@@ -20,45 +19,45 @@ import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
-
@Controller
-@RequestMapping(value={"/profile"})
+@RequestMapping(value = { "/profile" })
public class ProfileController {
- final static Logger _logger = LoggerFactory.getLogger(ProfileController.class);
-
- @Autowired
- private UserInfoService userInfoService;
-
- @Autowired
- private MyProfileService myProfileService;
-
-
- @RequestMapping(value={"/myProfile"})
- public ModelAndView forwardBasic(){
- ModelAndView modelAndView=new ModelAndView("profile/myProfile");
- UserInfo userInfo=userInfoService.loadByUsername(WebContext.getUserInfo().getUsername());
- WebContext.getSession().setAttribute(userInfo.getId(), userInfo.getPicture());
-
-// HashMapextraAttributeMap=new HashMap();
-// extraAttributeMap=(HashMap)JsonUtils.json2Object(userInfo.getExtraAttribute(),extraAttributeMap);
-// modelAndView.addObject("extraAttributeMap", extraAttributeMap);
-// _logger.info("extraAttributeMap : "+extraAttributeMap);
-
- modelAndView.addObject("model", userInfo);
- return modelAndView;
- }
-
-
- /**
- * 修改用户
- * @param userInfo
- * @param result
- * @return
- */
- @RequestMapping(value="/update/myProfile")
- public ModelAndView updatebasic(@Valid @ModelAttribute("userInfo")UserInfo userInfo,BindingResult result) {
- _logger.debug(userInfo.toString());
-
+ static final Logger _logger = LoggerFactory.getLogger(ProfileController.class);
+
+ @Autowired
+ private UserInfoService userInfoService;
+
+ @Autowired
+ private MyProfileService myProfileService;
+
+ @RequestMapping(value = { "/myProfile" })
+ public ModelAndView forwardBasic() {
+ ModelAndView modelAndView = new ModelAndView("profile/myProfile");
+ UserInfo userInfo = userInfoService.loadByUsername(WebContext.getUserInfo().getUsername());
+ WebContext.getSession().setAttribute(userInfo.getId(), userInfo.getPicture());
+
+ // HashMapextraAttributeMap=new HashMap();
+ // extraAttributeMap=(HashMap)JsonUtils.json2Object(userInfo.getExtraAttribute(),extraAttributeMap);
+ // modelAndView.addObject("extraAttributeMap", extraAttributeMap);
+ // _logger.info("extraAttributeMap : "+extraAttributeMap);
+ //
+ modelAndView.addObject("model", userInfo);
+ return modelAndView;
+ }
+
+ /**
+ * 修改用户.
+ *
+ * @param userInfo
+ * @param result
+ * @return
+ */
+ @RequestMapping(value = "/update/myProfile")
+ public ModelAndView updatebasic(
+ @Valid @ModelAttribute("userInfo") UserInfo userInfo,
+ BindingResult result) {
+ _logger.debug(userInfo.toString());
+
// if(userInfo.getExtraAttributeValue()!=null){
// String []extraAttributeLabel=userInfo.getExtraAttributeName().split(",");
// String []extraAttributeValue=userInfo.getExtraAttributeValue().split(",");
@@ -69,16 +68,19 @@ public class ProfileController {
// String extraAttribute=JsonUtils.object2Json(extraAttributeMap);
// userInfo.setExtraAttribute(extraAttribute);
// }
-
- if(myProfileService.updateProfile(userInfo)>0) {
- new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_SUCCESS),userInfo,MessageType.success,OperateType.add,MessageScope.DB);
-
- }else{
- new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_ERROR),MessageType.error);
- }
-
- return WebContext.forward("forwardMyProfile");
-
- }
+
+ if (myProfileService.updateProfile(userInfo) > 0) {
+ new Message(
+ WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_SUCCESS),
+ userInfo, MessageType.success,
+ OperateType.add, MessageScope.DB);
+
+ } else {
+ new Message(WebContext.getI18nValue(OPERATEMESSAGE.UPDATE_ERROR), MessageType.error);
+ }
+
+ return WebContext.forward("forwardMyProfile");
+
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/IpAddressFilter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/IpAddressFilter.java
index 85c7062b5..cd5d887d8 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/IpAddressFilter.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/IpAddressFilter.java
@@ -1,7 +1,6 @@
package org.maxkey.web.filter;
import java.io.IOException;
-
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@@ -12,7 +11,6 @@ import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-
import org.maxkey.config.ApplicationConfig;
import org.maxkey.domain.IpAddrFilter;
import org.maxkey.web.WebContext;
@@ -24,58 +22,59 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.context.support.WebApplicationContextUtils;
public class IpAddressFilter implements Filter {
- private static final Logger _logger = LoggerFactory.getLogger(IpAddressFilter.class);
-
- @Autowired
- @Qualifier("applicationConfig")
- private ApplicationConfig applicationConfig;
-
- boolean whiteList=false;
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- // TODO Auto-generated method stub
-
- }
+ private static final Logger _logger = LoggerFactory.getLogger(IpAddressFilter.class);
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {
- if(applicationConfig==null){
- _logger.info("applicationConfig init .");
- applicationConfig=WebApplicationContextUtils.getWebApplicationContext(request.getServletContext()).getBean("applicationConfig", ApplicationConfig.class);
- }
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- HttpServletResponse httpServletResponse = (HttpServletResponse) response;
- HttpSession session = httpServletRequest.getSession();
- String ipAddress=WebContext.getRequestIpAddress(httpServletRequest);
- _logger.trace("IpAddress "+ipAddress);
- //黑名单地址
- if(IpAddressCache.ipAddressBlackListMap.containsKey(ipAddress)){
- IpAddrFilter ipAddrFilter=IpAddressCache.ipAddressBlackListMap.get(ipAddress);
-
- _logger.info("You IpAddress in Black List "+ipAddrFilter);
- RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
- dispatcher.forward(request, response);
- return ;
+ @Autowired
+ @Qualifier("applicationConfig")
+ private ApplicationConfig applicationConfig;
- }
- //白名单地址
- if(whiteList&&!IpAddressCache.ipAddressWhiteListMap.containsKey(ipAddress)){
- _logger.info("You IpAddress not in White List "+ipAddress);
- RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
- dispatcher.forward(request, response);
- return ;
- }
-
-
- chain.doFilter(request, response);
- }
+ boolean whiteList = false;
- @Override
- public void destroy() {
- // TODO Auto-generated method stub
-
- }
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+ if (applicationConfig == null) {
+ _logger.info("applicationConfig init .");
+ applicationConfig = WebApplicationContextUtils.getWebApplicationContext(
+ request.getServletContext())
+ .getBean("applicationConfig", ApplicationConfig.class);
+ }
+ HttpServletRequest httpServletRequest = (HttpServletRequest) request;
+ HttpServletResponse httpServletResponse = (HttpServletResponse) response;
+ HttpSession session = httpServletRequest.getSession();
+ String ipAddress = WebContext.getRequestIpAddress(httpServletRequest);
+ _logger.trace("IpAddress " + ipAddress);
+ // 黑名单地址
+ if (IpAddressCache.ipAddressBlackListMap.containsKey(ipAddress)) {
+ IpAddrFilter ipAddrFilter = IpAddressCache.ipAddressBlackListMap.get(ipAddress);
+
+ _logger.info("You IpAddress in Black List " + ipAddrFilter);
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
+ dispatcher.forward(request, response);
+ return;
+
+ }
+ // 白名单地址
+ if (whiteList && !IpAddressCache.ipAddressWhiteListMap.containsKey(ipAddress)) {
+ _logger.info("You IpAddress not in White List " + ipAddress);
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
+ dispatcher.forward(request, response);
+ return;
+ }
+
+ chain.doFilter(request, response);
+ }
+
+ @Override
+ public void destroy() {
+ // TODO Auto-generated method stub
+
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/SingleSignOnFilter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/SingleSignOnFilter.java
index 01cdeeb29..0208146db 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/SingleSignOnFilter.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/SingleSignOnFilter.java
@@ -10,40 +10,45 @@ import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-
import org.maxkey.util.StringUtils;
import org.maxkey.web.WebConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- *
+ * SingleSignOnFilter.
* @author Crystal.Sea
*/
+
public class SingleSignOnFilter implements Filter {
- private static final Logger _logger = LoggerFactory.getLogger(SingleSignOnFilter.class);
-
- public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
+ private static final Logger _logger = LoggerFactory.getLogger(SingleSignOnFilter.class);
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- HttpServletResponse httpServletResponse = (HttpServletResponse) response;
- HttpSession session = httpServletRequest.getSession();
- //浠巗ession涓幏鍙栧瓨鏀剧殑appid
- String appId = (String) session.getAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID);
- //鑾峰彇鏈�鍚庝竴涓�"/"鐨勬暟鎹綔涓篴ppid锛屼繚瀛樺湪session涓�
- if(StringUtils.isNullOrBlank(appId)) {
- String uir = httpServletRequest.getRequestURI();
- session.setAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID, uir.substring(uir.lastIndexOf("/")+1));
- session.setAttribute("protocol", "formbase");
- }
- chain.doFilter(request, response);
- }
-
- public void destroy() {
- _logger.debug(" destroy.");
- }
+ /**
+ *doFilter.
+ */
+ public void doFilter(ServletRequest request,
+ ServletResponse response, FilterChain chain)throws IOException, ServletException {
- public void init(FilterConfig config) throws ServletException {
- _logger.debug(" init.");
- }
+ HttpServletRequest httpServletRequest = (HttpServletRequest) request;
+ HttpServletResponse httpServletResponse = (HttpServletResponse) response;
+ HttpSession session = httpServletRequest.getSession();
+ // 浠巗ession涓幏鍙栧瓨鏀剧殑appid
+ String appId = (String) session.getAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID);
+ // 鑾峰彇鏈�鍚庝竴涓�"/"鐨勬暟鎹綔涓篴ppid锛屼繚瀛樺湪session涓�
+ if (StringUtils.isNullOrBlank(appId)) {
+ String uir = httpServletRequest.getRequestURI();
+ session.setAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID,
+ uir.substring(uir.lastIndexOf("/") + 1));
+ session.setAttribute("protocol", "formbase");
+ }
+ chain.doFilter(request, response);
+ }
+
+ public void destroy() {
+ _logger.debug(" destroy.");
+ }
+
+ public void init(FilterConfig config) throws ServletException {
+ _logger.debug(" init.");
+ }
}
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 de53e657c..67546fdc3 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
@@ -1,9 +1,7 @@
package org.maxkey.web.interceptor;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint;
import org.maxkey.dao.service.AppsService;
import org.maxkey.dao.service.HistoryLoginAppsService;
@@ -20,42 +18,47 @@ import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class HistoryLoginAppAdapter extends HandlerInterceptorAdapter {
- private static final Logger _logger = LoggerFactory.getLogger(HistoryLoginAppAdapter.class);
+ private static final Logger _logger = LoggerFactory.getLogger(HistoryLoginAppAdapter.class);
- @Autowired
- HistoryLoginAppsService historyLoginAppsService;
-
- @Autowired
- @Qualifier("appsService")
- protected AppsService appsService;
- /*
- * (non-Javadoc)
- * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
- */
- public void postHandle(HttpServletRequest request,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.getAppIdFromRequestURI(request);
- }
- //Applications app=applicationsService.get(appId);
- Apps app=(Apps)WebContext.getAttribute(AuthorizeBaseEndpoint.class.getName());
- String sessionId=(String)WebContext.getAttribute(WebConstants.CURRENT_USER_SESSION_ID);
- UserInfo userInfo =WebContext.getUserInfo();
- _logger.debug("sessionId : "+sessionId+" ,appId : "+appId);
- HistoryLoginApps historyLoginApps=new HistoryLoginApps();
- historyLoginApps.setId(historyLoginApps.generateId());
- historyLoginApps.setAppId(appId);
- historyLoginApps.setSessionId(sessionId);
- historyLoginApps.setAppName(app.getName());
- historyLoginApps.setUid(userInfo.getId());
- historyLoginApps.setUsername(userInfo.getUsername());
- historyLoginApps.setDisplayName(userInfo.getDisplayName());
- historyLoginAppsService.insert(historyLoginApps);
- WebContext.removeAttribute(WebConstants.CURRENT_SINGLESIGNON_URI);
- WebContext.removeAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID);
- }
+ @Autowired
+ HistoryLoginAppsService historyLoginAppsService;
+
+ @Autowired
+ @Qualifier("appsService")
+ protected AppsService appsService;
+
+ /**
+ * postHandle .
+ * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(
+ * javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse, java.lang.Object)
+ */
+ public void postHandle(HttpServletRequest request,
+ 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);
+ HistoryLoginApps historyLoginApps = new HistoryLoginApps();
+ historyLoginApps.setId(historyLoginApps.generateId());
+ historyLoginApps.setAppId(appId);
+ historyLoginApps.setSessionId(sessionId);
+ historyLoginApps.setAppName(app.getName());
+ historyLoginApps.setUid(userInfo.getId());
+ historyLoginApps.setUsername(userInfo.getUsername());
+ historyLoginApps.setDisplayName(userInfo.getDisplayName());
+ historyLoginAppsService.insert(historyLoginApps);
+ WebContext.removeAttribute(WebConstants.CURRENT_SINGLESIGNON_URI);
+ WebContext.removeAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID);
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java
index 86118bfe9..de6629f21 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLogsAdapter.java
@@ -2,7 +2,6 @@ package org.maxkey.web.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.maxkey.dao.service.HistoryLogsService;
import org.maxkey.domain.HistoryLogs;
import org.maxkey.domain.UserInfo;
@@ -19,47 +18,53 @@ import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
* Contorller调用完成后进行日志操作
- *
* 日志处理需在parasec-servlet.xml中配置
* mvc:interceptors log
* @author Crystal.Sea
*
*/
public class HistoryLogsAdapter extends HandlerInterceptorAdapter {
-
- private static final Logger _logger = LoggerFactory.getLogger(HistoryLogsAdapter.class);
-
- @Autowired
- @Qualifier("historyLogsService")
- private HistoryLogsService historyLogsService;
-
- // after the handler is executed
- public void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {
- _logger.debug("postHandle");
- Message message = WebContext.getMessage();//读取session中message
-
- if(message != null){
- if(message.getMessageScope() == MessageScope.DB || message.getMessageScope() == MessageScope.DB_CLIENT) {//判断message类型
- UserInfo userInfo =WebContext.getUserInfo();//取得当前用户信息
-
- //创建日志记录
- HistoryLogs historyLogs = new HistoryLogs(
- message.getServiceName(),
- message.getCode(),
- message.getMessage(),
- JsonUtils.object2Json(message.getMessageObject()),
- message.getMessageType().toString(),
- message.getOperateType().toString(),
- userInfo==null?null:userInfo.getId(),
- userInfo==null?null:userInfo.getUsername(),
- ""
- );
- _logger.debug("insert db historyLogs content : "+historyLogs);
- historyLogsService.insert(historyLogs);//日志插入数据库
- if(message.getMessageScope() == MessageScope.DB) {//message类型仅插入数据库
- WebContext.clearMessage();//清除message
- }
- }
- }
- }
+
+ private static final Logger _logger = LoggerFactory.getLogger(HistoryLogsAdapter.class);
+
+ @Autowired
+ @Qualifier("historyLogsService")
+ private HistoryLogsService historyLogsService;
+
+ /**
+ * after the handler is executed.
+ */
+ public void postHandle(HttpServletRequest request,
+ HttpServletResponse response,
+ Object handler,ModelAndView modelAndView) throws Exception {
+ _logger.debug("postHandle");
+ Message message = WebContext.getMessage();//读取session中message
+
+ if (message != null) {
+ //判断message类型
+ if (message.getMessageScope() == MessageScope.DB
+ || message.getMessageScope() == MessageScope.DB_CLIENT) {
+ UserInfo userInfo = WebContext.getUserInfo();//取得当前用户信息
+
+ //创建日志记录
+ HistoryLogs historyLogs = new HistoryLogs(
+ message.getServiceName(),
+ message.getCode(),
+ message.getMessage(),
+ JsonUtils.object2Json(message.getMessageObject()),
+ message.getMessageType().toString(),
+ message.getOperateType().toString(),
+ userInfo == null ? null : userInfo.getId(),
+ userInfo == null ? null : userInfo.getUsername(),
+ ""
+ );
+ _logger.debug("insert db historyLogs content : " + historyLogs);
+ historyLogsService.insert(historyLogs);//日志插入数据库
+ //message类型仅插入数据库
+ if (message.getMessageScope() == MessageScope.DB) {
+ WebContext.clearMessage();//清除message
+ }
+ }
+ }
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java
index 934c32569..899cb9540 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PermissionAdapter.java
@@ -1,11 +1,9 @@
package org.maxkey.web.interceptor;
import java.util.concurrent.ConcurrentHashMap;
-
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.maxkey.config.ApplicationConfig;
import org.maxkey.web.WebContext;
import org.slf4j.Logger;
@@ -13,56 +11,58 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
/**
- * 权限Interceptor处理
- * 权限处理需在servlet.xml中配置
- * mvc:interceptors permission
+ * 权限Interceptor处理 权限处理需在servlet.xml中配置 mvc:interceptors permission
+ *
* @author Crystal.Sea
*
*/
public class PermissionAdapter extends HandlerInterceptorAdapter {
- private static final Logger _logger = LoggerFactory.getLogger(PermissionAdapter.class);
- //无需Interceptor url
- @Autowired
- @Qualifier("applicationConfig")
- private ApplicationConfig applicationConfig;
-
- static ConcurrentHashMapnavigationsMap=null;
- /*
- * 请求前处理
- * (non-Javadoc)
- * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
- */
- @Override
- public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
- _logger.trace("PermissionAdapter preHandle");
- //判断用户是否登录
- if(WebContext.getAuthentication()==null||WebContext.getAuthentication().getAuthorities()==null){//判断用户和角色,判断用户是否登录用户
- _logger.trace("No Authentication ... forward to /login");
- RequestDispatcher dispatcher = request.getRequestDispatcher("/login");
- dispatcher.forward(request, response);
- return false;
- }
-
-
- boolean hasAccess=true;
-
-
- /*
- boolean preHandler = super.preHandle(request, response, handler);
-
- if(preHandler) {
- preHandler = false;
-
-
- if(!preHandler){//无权限转向
- log.debug("You do not have permission to access "+accessUrl);
- RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
- dispatcher.forward(request, response);
- return false;
- }
- }*/
- return hasAccess;
- }
+ private static final Logger _logger = LoggerFactory.getLogger(PermissionAdapter.class);
+ // 无需Interceptor url
+ @Autowired
+ @Qualifier("applicationConfig")
+ private ApplicationConfig applicationConfig;
+
+ static ConcurrentHashMap navigationsMap = null;
+
+ /*
+ * 请求前处理 (non-Javadoc)
+ *
+ * @see
+ * org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(
+ * javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse, java.lang.Object)
+ */
+ @Override
+ public boolean preHandle(HttpServletRequest request,
+ HttpServletResponse response, Object handler)
+ throws Exception {
+ _logger.trace("PermissionAdapter preHandle");
+ // 判断用户是否登录, 判断用户和角色,判断用户是否登录用户
+ if (WebContext.getAuthentication() == null
+ || WebContext.getAuthentication().getAuthorities() == null) {
+ _logger.trace("No Authentication ... forward to /login");
+ RequestDispatcher dispatcher = request.getRequestDispatcher("/login");
+ dispatcher.forward(request, response);
+ return false;
+ }
+
+ boolean hasAccess = true;
+
+ /*
+ * boolean preHandler = super.preHandle(request, response, handler);
+ *
+ * if(preHandler) { preHandler = false;
+ *
+ *
+ * if(!preHandler){//无权限转向
+ * log.debug("You do not have permission to access "+accessUrl);
+ * RequestDispatcher dispatcher = request.getRequestDispatcher("/accessdeny");
+ * dispatcher.forward(request, response); return false; } }
+ */
+ return hasAccess;
+ }
}
diff --git a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PreLoginAppAdapter.java b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PreLoginAppAdapter.java
index b26f0f10d..46b8a40fa 100644
--- a/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PreLoginAppAdapter.java
+++ b/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PreLoginAppAdapter.java
@@ -1,9 +1,7 @@
package org.maxkey.web.interceptor;
-import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import org.maxkey.domain.UserInfo;
import org.maxkey.web.WebConstants;
import org.maxkey.web.WebContext;
@@ -11,38 +9,43 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-
public class PreLoginAppAdapter extends HandlerInterceptorAdapter {
-
-
- private static final Logger _logger = LoggerFactory.getLogger(PreLoginAppAdapter.class);
-
- @Override
- public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {
- _logger.debug("preHandle");
- UserInfo userInfo=WebContext.getUserInfo();
- String redirect_uri=request.getRequestURL().toString();
- String appId=getAppIdFromRequestURI(request);
- _logger.debug("preHandle app Id "+appId);
- Object singlesignon_uri=WebContext.getAttribute(WebConstants.CURRENT_SINGLESIGNON_URI);
- if(singlesignon_uri!=null&&singlesignon_uri.equals(redirect_uri)){
- return true;
- }
- /*if(userInfo.getProtectedAppsMap().get(appId)!=null){
-
- request.setAttribute("redirect_uri",redirect_uri);
- _logger.debug(""+redirect_uri);
- RequestDispatcher dispatcher = request.getRequestDispatcher("/authorize/protected/forward");
- dispatcher.forward(request, response);
- return false;
- }*/
-
- return true;
- }
-
- public static String getAppIdFromRequestURI(HttpServletRequest request){
- String[] uri=request.getRequestURI().split("/");
- String appId=uri[uri.length-1];
- return appId;
- }
+
+ private static final Logger _logger = LoggerFactory.getLogger(PreLoginAppAdapter.class);
+
+ @Override
+ public boolean preHandle(HttpServletRequest request,
+ HttpServletResponse response, Object handler)
+ throws Exception {
+ _logger.debug("preHandle");
+ UserInfo userInfo = WebContext.getUserInfo();
+ String redirect_uri = request.getRequestURL().toString();
+ String appId = getAppIdFromRequestUrl(request);
+ _logger.debug("preHandle app Id " + appId);
+ Object singlesignon_uri = WebContext.getAttribute(WebConstants.CURRENT_SINGLESIGNON_URI);
+ if (singlesignon_uri != null && singlesignon_uri.equals(redirect_uri)) {
+ return true;
+ }
+ /*
+ * if(userInfo.getProtectedAppsMap().get(appId)!=null){
+ *
+ * request.setAttribute("redirect_uri",redirect_uri);
+ * _logger.debug(""+redirect_uri); RequestDispatcher dispatcher =
+ * request.getRequestDispatcher("/authorize/protected/forward");
+ * dispatcher.forward(request, response); return false; }
+ */
+
+ return true;
+ }
+
+ /**
+ * Request URL .
+ * @param request http
+ * @return .
+ */
+ public static String getAppIdFromRequestUrl(HttpServletRequest request) {
+ String[] uri = request.getRequestURI().split("/");
+ String appId = uri[uri.length - 1];
+ return appId;
+ }
}
diff --git a/style/checkstyle-rules.xml b/style/checkstyle-rules.xml
new file mode 100644
index 000000000..ea3a85851
--- /dev/null
+++ b/style/checkstyle-rules.xml
@@ -0,0 +1,324 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file