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 getAuthorities() { - return grantedAuthority; - } + @Override + public String getName() { + return "Basic Authentication"; + } - @Override - public Object getCredentials() { - return this.getJ_password(); - } + @Override + public Collection 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