Crystal.Sea 3 tahun lalu
induk
melakukan
2fdd018239
100 mengubah file dengan 388 tambahan dan 748 penghapusan
  1. 6 2
      ReleaseNotes.txt
  2. 7 7
      gradle.properties
  3. 1 1
      maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/JwtAuthnAutoConfiguration.java
  4. 2 2
      maxkey-authentications/maxkey-authentication-otp/src/main/java/org/maxkey/password/onetimepwd/algorithm/HmacOTP.java
  5. 0 3
      maxkey-authentications/maxkey-authentication-otp/src/main/java/org/maxkey/password/onetimepwd/impl/SmsOtpAuthn.java
  6. 1 1
      maxkey-authentications/maxkey-authentication-otp/src/test/java/org/maxkey/otp/algorithm/TimeBasedOTPTest.java
  7. 2 1
      maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/service/SocialSignOnProviderService.java
  8. 0 76
      maxkey-common/src/main/java/org/maxkey/crypto/cert/NameUtil.java
  9. 3 3
      maxkey-common/src/main/java/org/maxkey/crypto/cert/StringUtil.java
  10. 28 447
      maxkey-common/src/main/java/org/maxkey/crypto/cert/X509CertUtils.java
  11. 6 2
      maxkey-common/src/main/java/org/maxkey/crypto/cert/X509V3CertGen.java
  12. 0 5
      maxkey-common/src/main/java/org/maxkey/crypto/jwt/encryption/service/impl/RecipientJwtEncryptionAndDecryptionServiceBuilder.java
  13. 0 3
      maxkey-common/src/main/java/org/maxkey/crypto/jwt/signer/service/impl/SymmetricCacheService.java
  14. 0 3
      maxkey-common/src/main/java/org/maxkey/crypto/jwt/signer/service/impl/SymmetricSigningAndValidationServiceBuilder.java
  15. 0 2
      maxkey-common/src/main/java/org/maxkey/crypto/keystore/KeyStoreLoader.java
  16. 8 5
      maxkey-common/src/main/java/org/maxkey/crypto/keystore/KeyStoreUtil.java
  17. 3 0
      maxkey-common/src/main/java/org/maxkey/util/BeanConvert.java
  18. 5 4
      maxkey-common/src/main/java/org/maxkey/util/BeanUtil.java
  19. 4 2
      maxkey-common/src/main/java/org/maxkey/util/DynaBean.java
  20. 2 2
      maxkey-common/src/main/java/org/maxkey/util/Instance.java
  21. 2 2
      maxkey-common/src/main/java/org/maxkey/util/MethodInvoke.java
  22. 193 0
      maxkey-common/src/test/java/org/maxkey/Copyright4RZ.java
  23. 1 4
      maxkey-common/src/test/java/org/maxkey/cache/CacheFactoryTest.java
  24. 0 2
      maxkey-common/src/test/java/org/maxkey/cache/RandomCache.java
  25. 0 1
      maxkey-common/src/test/java/org/maxkey/crypto/Base64UtilsTest.java
  26. 0 3
      maxkey-common/src/test/java/org/maxkey/crypto/DigestUtilsTest.java
  27. 0 2
      maxkey-common/src/test/java/org/maxkey/crypto/Md5SumTest.java
  28. 2 4
      maxkey-common/src/test/java/org/maxkey/crypto/RSAUtilsTest.java
  29. 0 1
      maxkey-common/src/test/java/org/maxkey/crypto/ReciprocalUtilsTest.java
  30. 1 2
      maxkey-common/src/test/java/org/maxkey/crypto/cert/X509V3CertGenTest.java
  31. 0 1
      maxkey-common/src/test/java/org/maxkey/crypto/signature/DsaSignerTest.java
  32. 0 1
      maxkey-common/src/test/java/org/maxkey/crypto/signature/RsaSignerTest.java
  33. 0 1
      maxkey-common/src/test/java/org/maxkey/mail/MailTest.java
  34. 1 0
      maxkey-common/src/test/java/org/maxkey/otp/algorithm/RQcodeTest.java
  35. 0 2
      maxkey-common/src/test/java/org/maxkey/util/DateUtilsTest.java
  36. 0 2
      maxkey-common/src/test/java/org/maxkey/util/EthernetAddressTest.java
  37. 0 2
      maxkey-common/src/test/java/org/maxkey/util/MacAddressTest.java
  38. 0 1
      maxkey-common/src/test/java/org/maxkey/util/ObjectTransformerTest.java
  39. 0 1
      maxkey-common/src/test/java/org/maxkey/util/PathUtilsTest.java
  40. 0 1
      maxkey-common/src/test/java/org/maxkey/util/StringGeneratorTest.java
  41. 0 1
      maxkey-common/src/test/java/org/maxkey/util/UUIDGeneratorTest.java
  42. 0 16
      maxkey-common/src/test/java/org/maxkey/util/XMLHelperTest.java
  43. 7 5
      maxkey-core/src/main/java/org/maxkey/autoconfigure/MvcAutoConfiguration.java
  44. 2 1
      maxkey-core/src/main/java/org/maxkey/autoconfigure/SwaggerConfig.java
  45. 1 4
      maxkey-core/src/main/java/org/maxkey/configuration/ApplicationConfig.java
  46. 0 1
      maxkey-core/src/main/java/org/maxkey/entity/xml/UserInfoXML.java
  47. 2 2
      maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnection.java
  48. 1 1
      maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnectionFactory.java
  49. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/BasePathTagDirective.java
  50. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/BaseTagDirective.java
  51. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/BrowserTagDirective.java
  52. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/CurrUrlTagDirective.java
  53. 2 6
      maxkey-core/src/main/java/org/maxkey/web/tag/DateTagDirective.java
  54. 1 1
      maxkey-core/src/main/java/org/maxkey/web/tag/DialogTagDirective.java
  55. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/GenIdTagDirective.java
  56. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/ParameterTagDirective.java
  57. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/PathVarTagDirective.java
  58. 1 6
      maxkey-core/src/main/java/org/maxkey/web/tag/RedirectTagDirective.java
  59. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/StaticTagDirective.java
  60. 1 0
      maxkey-core/src/main/java/org/maxkey/web/tag/TreeTagDirective.java
  61. 2 0
      maxkey-core/src/test/java/org/maxkey/EscapeHtml4Test.java
  62. 0 2
      maxkey-core/src/test/java/org/maxkey/persistence/ldap/ActiveDirectoryUtilsTest.java
  63. 1 1
      maxkey-gataway/src/main/resources/application.yml
  64. 5 4
      maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimOrganizationController.java
  65. 5 5
      maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimUserController.java
  66. 0 4
      maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString2ObjectTest.java
  67. 5 11
      maxkey-persistence/src/test/java/org/apache/mybatis/jpa/test/FormBasedDetailsServiceTest.java
  68. 0 2
      maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/AbstractTicketException.java
  69. 0 2
      maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/AbstractWebApplicationService.java
  70. 1 1
      maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/Service.java
  71. 0 2
      maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/SimpleWebApplicationServiceImpl.java
  72. 1 5
      maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/generator/InetAddressUtils.java
  73. 1 2
      maxkey-protocols/maxkey-protocol-cas/src/test/java/org/maxkey/web/authorize/endpoint/RestTestClient.java
  74. 2 1
      maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiCndnsApiMailAdapter.java
  75. 4 1
      maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiQQExmailAdapter.java
  76. 1 0
      maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiZentaoAdapter.java
  77. 5 0
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/exceptions/OAuth2ExceptionJackson2Serializer.java
  78. 2 2
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/jwt/JwtHelper.java
  79. 5 0
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/jwt/codec/Base64Codec.java
  80. 5 0
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/jwt/crypto/sign/InvalidSignatureException.java
  81. 0 2
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/OAuth2UserDetailsService.java
  82. 6 3
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/approval/Approval.java
  83. 1 1
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/approval/JdbcApprovalStore.java
  84. 1 2
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/code/RandomValueAuthorizationCodeServices.java
  85. 0 3
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/CheckTokenEndpoint.java
  86. 2 2
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/RemoteTokenServices.java
  87. 3 3
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/JwtAccessTokenConverter.java
  88. 12 15
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/RedisTokenStore.java
  89. 2 1
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oidc/idtoken/OIDCIdTokenEnhancer.java
  90. 1 1
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/autoconfigure/Oauth20AutoConfiguration.java
  91. 0 3
      maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/resources/META-INF/MANIFEST.MF
  92. 6 2
      maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/consumer/endpoint/ConsumerEndpoint.java
  93. 0 6
      maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/jit/ProvisioningAdapter.java
  94. 0 1
      maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/xml/SAML2ValidatorSuite.java
  95. 3 0
      maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/autoconfigure/Saml20AutoConfiguration.java
  96. 1 1
      maxkey-webs/maxkey-boot-monitor/src/main/resources/application.properties
  97. 0 2
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/SingleSignOnFilter.java
  98. 0 4
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/historys/contorller/HistoryLoginController.java
  99. 0 1
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java
  100. 1 2
      maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PreLoginAppAdapter.java

+ 6 - 2
ReleaseNotes.txt

@@ -24,6 +24,10 @@
 	*(MAXKEY-210723) mgt登录错误提示信息
     *(MAXKEY-210724) 依赖jar引用、更新和升级
         spring              5.3.10
+        springBoot          2.5.5
+        springkafka         2.7.7
+        spring-cloud        3.0.4
+        springcloudalibabacspl 1.8.2
         tomcat              9.0.53
         kafkaclients        2.8.1
         jibGradlePlugin     3.1.4
@@ -31,10 +35,10 @@
         mysqlconnector      8.0.26
         jedis               3.7.0
         ehcache             3.9.6
-        spring-cloud        3.0.3
-        springcloudalibabacspl 1.8.2
         nacos               2.0.3
+        jacksonVersion      2.12.5
         httpasyncclient     4.1.4
+        JustAuth            1.16.4
     
 MaxKey v 2.9.0 GA 2021/08/24
     *(MAXKEY-210601) 企业微信扫描登录

+ 7 - 7
gradle.properties

@@ -1,6 +1,6 @@
 #maxkey properties 
 group                           =maxkey.top
-version                         =2.9.0
+version                         =3.0.0
 vendor                          =https://www.maxkey.top
 author                          =MaxKeyTop
 
@@ -45,16 +45,16 @@ tomcatVersion                   =9.0.53
 tomcatembedloggingjuliVersion   =8.5.2
 #spring
 springVersion                   =5.3.10
-springBootVersion               =2.5.4
+springBootVersion               =2.5.5
 springSecurityVersion           =5.5.2
 springDataVersion               =2.5.2
 springSessionVersion            =2.5.2
-springkafkaVersion              =2.7.6
+springkafkaVersion              =2.7.7
 springretryVersion              =1.3.0
 springplugincoreVersion         =2.0.0.RELEASE
 springpluginmetadataVersion     =2.0.0.RELEASE
 springfoxVersion                =3.0.0
-springcloudVersion              =3.0.3
+springcloudVersion              =3.0.4
 springcloudalibabaVersion       =2021.1
 springcloudalibabaspringVersion =1.0.11
 springcloudalibabacsplVersion   =1.8.2
@@ -99,7 +99,7 @@ attoparserVersion               =2.0.5.RELEASE
 unbescapeVersion                =1.1.6.RELEASE
 jhlabsfiltersVersion            =2.0.235-1
 slf4jVersion                    =1.7.32
-jacksonVersion                  =2.12.4
+jacksonVersion                  =2.12.5
 bouncycastleVersion             =1.64
 junitVersion                    =4.11
 mockitoallVersion               =1.10.19
@@ -108,8 +108,8 @@ nimbusjosejwtVersion            =9.4.1
 jcipannotationsVersion          =1.0
 minidevjsonsmartVersion         =2.3
 minidevasmVersion               =1.0.2
-simplehttpVersion               =1.0.3
-JustAuthVersion                 =1.16.3
+simplehttpVersion               =1.0.5
+JustAuthVersion                 =1.16.4
 javassistVersion                =3.23.0-GA
 esapiVersion                    =2.2.0.0
 javaxmailVersion                =1.6.2

+ 1 - 1
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/autoconfigure/JwtAuthnAutoConfiguration.java

@@ -108,7 +108,7 @@ public class JwtAuthnAutoConfiguration implements InitializingBean {
                     throws NoSuchAlgorithmException, InvalidKeySpecException, JOSEException {
         DefaultJwtEncryptionAndDecryptionService jwtEncryptionService = 
                 new DefaultJwtEncryptionAndDecryptionService(jwtSetKeyStore);
-        jwtEncryptionService.setDefaultAlgorithm(JWEAlgorithm.RSA1_5);//RSA1_5
+        jwtEncryptionService.setDefaultAlgorithm(JWEAlgorithm.RSA_OAEP_256);//RSA1_5
         jwtEncryptionService.setDefaultDecryptionKeyId("maxkey_rsa");
         jwtEncryptionService.setDefaultEncryptionKeyId("maxkey_rsa");
         return jwtEncryptionService;

+ 2 - 2
maxkey-authentications/maxkey-authentication-otp/src/main/java/org/maxkey/password/onetimepwd/algorithm/HmacOTP.java

@@ -45,10 +45,10 @@ public class HmacOTP {
             return generateOTP(seed, count, digits);
         } catch (InvalidKeyException e) {
             e.printStackTrace();
-            LoggerFactory.getLogger(HmacOTP.class).error(e.getMessage());
+            logger.error(e.getMessage());
         } catch (NoSuchAlgorithmException e) {
             e.printStackTrace();
-            LoggerFactory.getLogger(HmacOTP.class).error(e.getMessage());
+            logger.error(e.getMessage());
         }
         return "";
     }

+ 0 - 3
maxkey-authentications/maxkey-authentication-otp/src/main/java/org/maxkey/password/onetimepwd/impl/SmsOtpAuthn.java

@@ -20,13 +20,10 @@ package org.maxkey.password.onetimepwd.impl;
 import java.io.IOException;
 import java.util.Properties;
 
-import org.maxkey.constants.ConstantsProperties;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.password.onetimepwd.AbstractOtpAuthn;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
 
 public class SmsOtpAuthn extends AbstractOtpAuthn {
     private static final  Logger logger = LoggerFactory.getLogger(SmsOtpAuthn.class);

+ 1 - 1
maxkey-authentications/maxkey-authentication-otp/src/test/java/org/maxkey/otp/algorithm/TimeBasedOTPTest.java

@@ -41,7 +41,7 @@ public class TimeBasedOTPTest {
     	
     	 byte[]byteseed= Base32Utils.decode("DCGAGPE2BCDBD6D3FG4NX2QGACVIHXP4");//HexUtils.hex2Bytes( "a1270caecf007f2303cc9db12597a9694ff541aa");
          String seed=Base32Utils.encode(byteseed);
-         
+         System.out.println(seed);
          String hexString=Hex.encodeHexString(byteseed);
          //String hexString=HexUtils.bytes2HexString(byteseed);
          System.out.println(hexString);

+ 2 - 1
maxkey-authentications/maxkey-authentication-social/src/main/java/org/maxkey/authn/support/socialsignon/service/SocialSignOnProviderService.java

@@ -59,7 +59,8 @@ public class SocialSignOnProviderService{
 		}else if(provider.equalsIgnoreCase("qq")) {
 			authRequest = new AuthQqRequest(authConfig);
 		}else if(provider.equalsIgnoreCase("Alipay")) {
-			authRequest = new AuthAlipayRequest(authConfig);
+		    String alipayPublicKey = "";
+			authRequest = new AuthAlipayRequest(authConfig,alipayPublicKey);
 		}else if(provider.equalsIgnoreCase("Twitter")) {
 			authRequest = new AuthTwitterRequest(authConfig);
 		}else if(provider.equalsIgnoreCase("google")) {

+ 0 - 76
maxkey-common/src/main/java/org/maxkey/crypto/cert/NameUtil.java

@@ -1,76 +0,0 @@
-/*
- * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-
-/*
- * NameUtil.java
- */
-
-package org.maxkey.crypto.cert;
-
-import java.util.Vector;
-
-import javax.security.auth.x500.X500Principal;
-
-import org.bouncycastle.asn1.x509.X509Name;
-
-/**
- * Provides utility methods relating to X50* names.
- */
-
-public final class NameUtil {
-	/**
-	 * Private to prevent construction.
-	 */
-	private NameUtil() {
-		// Nothing to do
-	}
-
-	/**
-	 * Gets the common name from the given X509Name.
-	 * 
-	 * @param name
-	 *            the X.509 name
-	 * @return the common name, null if not found
-	 */
-	public static String getCommonName(X509Name name) {
-		if (name == null) {
-			return null;
-		}
-
-		Vector<?> values = name.getValues(X509Name.CN);
-		if (values == null || values.isEmpty()) {
-			return null;
-		}
-
-		return values.get(0).toString();
-	}
-
-	/**
-	 * Gets the common name from the given X500Principal.
-	 * 
-	 * @param name
-	 *            the X.500 principal
-	 * @return the common name, null if not found
-	 */
-	public static String getCommonName(X500Principal name) {
-		if (name == null) {
-			return null;
-		}
-
-		return getCommonName(new X509Name(name.getName()));
-	}
-}

+ 3 - 3
maxkey-common/src/main/java/org/maxkey/crypto/cert/StringUtil.java

@@ -29,7 +29,7 @@ import java.io.InputStreamReader;
 import java.math.BigInteger;
 import java.util.Locale;
 
-import org.bouncycastle.asn1.DERInteger;
+import org.bouncycastle.asn1.ASN1Integer;
 
 /**
  * String utilities.
@@ -64,9 +64,9 @@ public class StringUtil
 		{
 			bigInt = new BigInteger(1, (byte[]) obj);
 		}
-		else if (obj instanceof DERInteger)
+		else if (obj instanceof ASN1Integer)
 		{
-			bigInt = ((DERInteger) obj).getValue();
+			bigInt = ((ASN1Integer) obj).getValue();
 		}
 		else
 		{

+ 28 - 447
maxkey-common/src/main/java/org/maxkey/crypto/cert/X509CertUtils.java

@@ -25,18 +25,13 @@ import java.io.ByteArrayInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
-import java.io.StringWriter;
-import java.math.BigInteger;
 import java.net.URL;
 import java.security.GeneralSecurityException;
 import java.security.InvalidKeyException;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
-import java.security.PrivateKey;
-import java.security.PublicKey;
 import java.security.Security;
 import java.security.SignatureException;
 import java.security.cert.Certificate;
@@ -48,27 +43,12 @@ import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Date;
 import java.util.Enumeration;
-import java.util.Hashtable;
 import java.util.List;
-import java.util.Vector;
-
 import javax.security.auth.x500.X500Principal;
 
 import org.apache.commons.codec.binary.Base64;
-import org.bouncycastle.asn1.DERObjectIdentifier;
-import org.bouncycastle.asn1.x500.X500Name;
-import org.bouncycastle.asn1.x509.X509Name;
-import org.bouncycastle.cert.X509v3CertificateBuilder;
-import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder;
-import org.bouncycastle.jce.PKCS10CertificationRequest;
-import org.bouncycastle.jce.PrincipalUtil;
-import org.bouncycastle.jce.X509Principal;
 import org.bouncycastle.openssl.PEMParser;
-import org.bouncycastle.openssl.PEMWriter;
-import org.bouncycastle.openssl.PasswordException;
-import org.bouncycastle.x509.X509V3CertificateGenerator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -82,16 +62,16 @@ public final class X509CertUtils {
 	// Logger.getLogger(X509CertUtil.class.getCanonicalName());
 	private static final Logger _logger = LoggerFactory.getLogger(X509CertUtils.class);
 	/** PKCS #7 encoding name */
-	private static final String PKCS7_ENCODING = "PKCS7";
+	public static final String PKCS7_ENCODING = "PKCS7";
 
 	/** PkiPath encoding name */
-	private static final String PKIPATH_ENCODING = "PkiPath";
+	public static final String PKIPATH_ENCODING = "PkiPath";
 
 	/** OpenSSL PEM encoding name */
-	private static final String OPENSSL_PEM_ENCODING = "OpenSSL_PEM";
+	public static final String OPENSSL_PEM_ENCODING = "OpenSSL_PEM";
 
 	/** Type name for X.509 certificates */
-	private static final String X509_CERT_TYPE = "X.509";
+	public static final String X509_CERT_TYPE = "X.509";
 
 	/**
 	 * Private to prevent construction.
@@ -100,40 +80,7 @@ public final class X509CertUtils {
 		// Nothing to do
 	}
 
-	/**
-	 * Load one or more certificates from the specified URL, trying a built in
-	 * list of certification encodings.
-	 * 
-	 * @param url
-	 *            The URL to load certificates from
-	 * @param exceptions
-	 *            Collection where exceptions occurred will be added
-	 * @return The certificates
-	 * @throws IOException
-	 *             if an error accessing the URL occurs
-	 */
-	public static X509Certificate[] loadCertificates(URL url,
-			Collection<Exception> exceptions) throws IOException {
-		URL downloadedUrl = NetUtil.download(url);
 
-		X509Certificate[] certs = null;
-		for (String certType : new String[] { PKCS7_ENCODING, PKIPATH_ENCODING,
-				null, OPENSSL_PEM_ENCODING }) {
-			try {
-				certs = loadCertificates(downloadedUrl, certType);
-				break; // Success!
-			} catch (FileNotFoundException e) {
-				// Don't bother with rest of the types, just show the exception
-				// once
-				exceptions.add(e);
-				break;
-			} catch (Exception e) {
-				exceptions.add(e);
-			}
-		}
-
-		return certs;
-	}
 
 	public static X509Certificate loadCertFromPEM(String strPEM) {
 		StringReader stringReader = new StringReader(strPEM);
@@ -179,109 +126,7 @@ public final class X509CertUtils {
 		}
 	}
 
-	/**
-	 * Load one or more certificates from the specified URL.
-	 * 
-	 * @param url
-	 *            The URL to load certificates from
-	 * @param encoding
-	 *            The certification path encoding. If null, treat as a normal
-	 *            certificate, not certification path. Use one of the
-	 *            <code>*_ENCODING</code> constants here.
-	 * @return The certificates
-	 * @throws CryptoException
-	 *             Problem encountered while loading the certificate(s)
-	 * @throws FileNotFoundException
-	 *             If the certificate file does not exist, is a directory rather
-	 *             than a regular file, or for some other reason cannot be
-	 *             opened for reading
-	 * @throws IOException
-	 *             An I/O error occurred
-	 */
-	private static X509Certificate[] loadCertificates(URL url, String encoding)
-			throws CryptoException, IOException {
-		// TODO: connect/read timeouts
-
-		InputStream in = NetUtil.openGetStream(url);
-		Collection certs;
-
-		try {
-			if (OPENSSL_PEM_ENCODING.equals(encoding)) {
-				// Special case; this is not a real JCE supported encoding.
-				// Note: let PEMReader use its default provider (BC as of BC
-				// 1.40) internally; for example the
-				// default "SUN" provider may not contain an RSA implementation
-				PEMParser pr = new PEMParser(new InputStreamReader(in));
-
-				// These beasts can contain just about anything, and
-				// unfortunately the PEMReader API (as of BC
-				// 1.25 to at least 1.43) won't allow us to really skip things
-				// we're not interested in; stuff
-				// happens already in readObject().
-
-				certs = new ArrayList<X509Certificate>();
-				Object cert;
-
-				while (true) {
-					try {
-						cert = pr.readObject();
-					} catch (IOException e) {
-						if (e instanceof PasswordException) {
-							// Some kind of a password protected item (BC >=
-							// 1.44): carry on, see
-							// http://www.bouncycastle.org/jira/browse/BJA-182
-							continue;
-						}
-						throw e;
-					}
-
-					if (cert == null) {
-						break;
-					}
-
-					if (cert instanceof X509Certificate) {
-						certs.add(cert);
-					}
-					// Skip other stuff, at least for now.
-				}
-
-				pr.close();
-			} else {
-				CertificateFactory cf = CertificateFactory
-						.getInstance(X509_CERT_TYPE);
-
-				if (encoding != null) {
-					// Try it as a certification path of the specified type
-					certs = cf.generateCertPath(in, encoding).getCertificates();
-				} else {
-					// "Normal" certificate(s)
-					certs = cf.generateCertificates(in);
-				}
-
-				// Note that we rely on cf.generateCert() above to never return
-				// null nor a collection
-				// containing nulls.
-			}
-		}
-		// Some RuntimeExceptions which really should be CertificateExceptions
-		// may be thrown from
-		// cf.generateCert* above, for example Oracle's PKCS #7 parser tends to
-		// throw them... :P
-		catch (Exception ex) {
-			// TODO: don't throw if vCerts non-empty (eg. OpenSSL PEM above)?
-			throw new CryptoException("Could not load certificate.", ex);
-		} finally {
-			try {
-				in.close();
-			} catch (IOException e) {
-				_logger.warn("Could not close input stream from " + url, e);
-				// LOG.log(Level.WARNING, "Could not close input stream from " +
-				// url, e);
-			}
-		}
-
-		return (X509Certificate[]) certs.toArray(new X509Certificate[certs.size()]);
-	}
+	
 
 	/**
 	 * Load a CRL from the specified URL.
@@ -318,50 +163,7 @@ public final class X509CertUtils {
 		}
 	}
 
-	/**
-	 * Load a CSR from the specified URL.
-	 * 
-	 * @param url
-	 *            The URL to load CSR from
-	 * @return The CSR
-	 * @throws CryptoException
-	 *             Problem encountered while loading the CSR
-	 * @throws FileNotFoundException
-	 *             If the CSR file does not exist, is a directory rather than a
-	 *             regular file, or for some other reason cannot be opened for
-	 *             reading
-	 * @throws IOException
-	 *             An I/O error occurred
-	 */
-	public static PKCS10CertificationRequest loadCSR(URL url)
-			throws CryptoException, IOException {
-		// TODO: handle DER encoded requests too?
-		PEMParser pr = new PEMParser(new InputStreamReader(
-				NetUtil.openGetStream(url)));
-		try {
-			PKCS10CertificationRequest csr = (PKCS10CertificationRequest) pr
-					.readObject();
-			if (!csr.verify()) {
-				throw new CryptoException(
-						"Could not verify certification request.");
-			}
-			return csr;
-		} catch (ClassCastException ex) {
-			throw new CryptoException("Could not load certification request.",
-					ex);
-		} catch (GeneralSecurityException ex) {
-			throw new CryptoException("Could not load certification request.",
-					ex);
-		} finally {
-			try {
-				pr.close();
-			} catch (IOException e) {
-				_logger.warn("Could not close input stream from " + url, e);
-				// LOG.log(Level.WARNING, "Could not close input stream from " +
-				// url, e);
-			}
-		}
-	}
+
 
 	/**
 	 * Convert the supplied array of certificate objects into X509Certificate
@@ -574,248 +376,7 @@ public final class X509CertUtils {
 		}
 	}
 
-	/**
-	 * Generate a self-signed X509 Version 1 certificate for the supplied key
-	 * pair and signature algorithm.
-	 * 
-	 * @return The generated certificate
-	 * @param sCommonName
-	 *            Common name certificate attribute
-	 * @param sOrganisationUnit
-	 *            Organization Unit certificate attribute
-	 * @param sOrganisation
-	 *            Organization certificate attribute
-	 * @param sLocality
-	 *            Locality certificate
-	 * @param sState
-	 *            State certificate attribute
-	 * @param sEmailAddress
-	 *            Email Address certificate attribute
-	 * @param sCountryCode
-	 *            Country Code certificate attribute
-	 * @param iValidity
-	 *            Validity period of certificate in days
-	 * @param publicKey
-	 *            Public part of key pair
-	 * @param privateKey
-	 *            Private part of key pair
-	 * @param signatureType
-	 *            Signature Type
-	 * @throws CryptoException
-	 *             If there was a problem generating the certificate
-	 */
-	public static X509Certificate generateCert(String sCommonName,
-			String sOrganisationUnit, String sOrganisation, String sLocality,
-			String sState, String sCountryCode, String sEmailAddress,
-			int iValidity, PublicKey publicKey, PrivateKey privateKey,
-			SignatureType signatureType) throws CryptoException {
-		// Holds certificate attributes
-		
-		
 
-		Hashtable<DERObjectIdentifier, String> attrs = new Hashtable<DERObjectIdentifier, String>();
-		Vector<DERObjectIdentifier> vOrder = new Vector<DERObjectIdentifier>();
-
-		// Load certificate attributes
-		/*
-		if (sCommonName != null) {
-			attrs.put(X509Name.CN, sCommonName);
-			vOrder.add(0, X509Name.CN);
-		}
-
-		if (sOrganisationUnit != null) {
-			attrs.put(X509Name.OU, sOrganisationUnit);
-			vOrder.add(0, X509Name.OU);
-		}
-
-		if (sOrganisation != null) {
-			attrs.put(X509Name.O, sOrganisation);
-			vOrder.add(0, X509Name.O);
-		}
-
-		if (sLocality != null) {
-			attrs.put(X509Name.L, sLocality);
-			vOrder.add(0, X509Name.L);
-		}
-
-		if (sState != null) {
-			attrs.put(X509Name.ST, sState);
-			vOrder.add(0, X509Name.ST);
-		}
-
-		if (sCountryCode != null) {
-			attrs.put(X509Name.C, sCountryCode);
-			vOrder.add(0, X509Name.C);
-		}
-
-		if (sEmailAddress != null) {
-			attrs.put(X509Name.E, sEmailAddress);
-			vOrder.add(0, X509Name.E);
-		}*/
-
-		// Get an X509 Version 1 Certificate generator
-		X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
-
-		// Load the generator with generation parameters
-
-		// Set the issuer distinguished name
-		certGen.setIssuerDN(new X509Principal(vOrder, attrs));
-
-		// Valid before and after dates now to iValidity days in the future
-		certGen.setNotBefore(new Date(System.currentTimeMillis()));
-		certGen.setNotAfter(new Date(System.currentTimeMillis()
-				+ ((long) iValidity * 24 * 60 * 60 * 1000)));
-
-		// Set the subject distinguished name (same as issuer for our purposes)
-		certGen.setSubjectDN(new X509Principal(vOrder, attrs));
-
-		// Set the public key
-		certGen.setPublicKey(publicKey);
-
-		// Set the algorithm
-		certGen.setSignatureAlgorithm(signatureType.name());
-
-		// Set the serial number
-		certGen.setSerialNumber(generateX509SerialNumber());
-
-		X509v3CertificateBuilder builder = new JcaX509v3CertificateBuilder(
-				new X500Name("issueDn"), 
-				generateX509SerialNumber(), 
-				new Date(System.currentTimeMillis()), 
-				new Date(System.currentTimeMillis()+ ((long) iValidity * 24 * 60 * 60 * 1000)), 
-				new X500Name("subjectDn"),
-				publicKey);
-		
-		try {
-			// Generate an X.509 certificate, based on the current issuer and
-			// subject
-			return certGen.generate(privateKey, "BC");
-		}
-		// Something went wrong
-		catch (GeneralSecurityException ex) {
-			throw new CryptoException("Certificate generation failed.", ex);
-		}
-	}
-
-	/**
-	 * Renew a self-signed X509 Version 1 certificate.
-	 * 
-	 * @return The renewed certificate
-	 * @param oldCert
-	 *            old certificate
-	 * @param iValidity
-	 *            Validity period of certificate in days to add to the old
-	 *            cert's expiry date, or current time if the certificate has
-	 *            expired
-	 * @param publicKey
-	 *            Public part of key pair
-	 * @param privateKey
-	 *            Private part of key pair
-	 * @throws CryptoException
-	 *             If there was a problem generating the certificate
-	 */
-	public static X509Certificate renewCert(X509Certificate oldCert,
-			int iValidity, PublicKey publicKey, PrivateKey privateKey)
-			throws CryptoException {
-		// Get an X509 Version 1 Certificate generator
-		X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
-
-		// Load the generator with generation parameters
-
-		// Valid before and after dates now to iValidity days in the future from
-		// now or existing expiry date
-		Date now = new Date();
-		Date oldExpiry = oldCert.getNotAfter();
-		if (oldExpiry == null || oldExpiry.before(now)) {
-			oldExpiry = now;
-		}
-
-		certGen.setNotBefore(now);
-		certGen.setNotAfter(new Date(oldExpiry.getTime()
-				+ ((long) iValidity * 24 * 60 * 60 * 1000)));
-
-		// Set the public key
-		certGen.setPublicKey(publicKey);
-
-		// Set the algorithm
-		certGen.setSignatureAlgorithm(oldCert.getSigAlgName());
-
-		// Set the serial number
-		certGen.setSerialNumber(generateX509SerialNumber());
-
-		try {
-			// Set the issuer distinguished name
-			// TODO: verify/force self-signedness
-			certGen.setIssuerDN(PrincipalUtil.getIssuerX509Principal(oldCert));
-
-			// Set the subject distinguished name (same as issuer for our
-			// purposes)
-			certGen.setSubjectDN(PrincipalUtil.getSubjectX509Principal(oldCert));
-
-			// Generate an X.509 certificate, based on the current issuer and
-			// subject
-			return certGen.generate(privateKey, "BC");
-		}
-		// Something went wrong
-		catch (GeneralSecurityException ex) {
-			throw new CryptoException("Certificate generation failed.", ex);
-		}
-	}
-
-	/**
-	 * Generate a unique serial number for use as an X509 serial number.
-	 * 
-	 * @return The unique serial number
-	 */
-	private static BigInteger generateX509SerialNumber() {
-		// Time in seconds
-		return new BigInteger(Long.toString(System.currentTimeMillis() / 1000));
-	}
-
-	public static String generatePEMEncoded(Certificate cert) {
-		StringWriter encoded = new StringWriter();
-		PEMWriter pEMWriter = new PEMWriter(encoded);
-		try {
-			pEMWriter.writeObject(cert);
-			pEMWriter.close();
-			return encoded.toString();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	/**
-	 * Create a PKCS #10 certification request (CSR) using the supplied
-	 * certificate and private key.
-	 * 
-	 * @param cert
-	 *            The certificate
-	 * @param privateKey
-	 *            The private key
-	 * @throws CryptoException
-	 *             If there was a problem generating the CSR
-	 * @return The CSR
-	 */
-	public static PKCS10CertificationRequest generatePKCS10CSR(
-			X509Certificate cert, PrivateKey privateKey) throws CryptoException {
-		X509Name subject = new X509Name(cert.getSubjectDN().toString());
-
-		try {
-			PKCS10CertificationRequest csr = new PKCS10CertificationRequest(
-					cert.getSigAlgName(), subject, cert.getPublicKey(), null,
-					privateKey);
-			if (!csr.verify()) {
-				throw new CryptoException(
-						"Could not verify generated certification request.");
-			}
-
-			return csr;
-		} catch (GeneralSecurityException ex) {
-			throw new CryptoException(
-					"Could not generate a certification request.", ex);
-		}
-	}
 
 	/**
 	 * Verify that one X.509 certificate was signed using the private key that
@@ -1008,22 +569,42 @@ public final class X509CertUtils {
 		X500Principal subject = cert.getSubjectX500Principal();
 		X500Principal issuer = cert.getIssuerX500Principal();
 
-		String sSubjectCN = NameUtil.getCommonName(subject);
+		String sSubjectCN = getCommonName(subject);
 
 		// Could not get a subject CN - return blank
 		if (sSubjectCN == null) {
 			return "";
 		}
 
-		String sIssuerCN = NameUtil.getCommonName(issuer);
+		String sIssuerCN = getCommonName(issuer);
 
 		// Self-signed certificate or could not get an issuer CN
 		if (subject.equals(issuer) || sIssuerCN == null) {
 			// Alias is the subject CN
 			return sSubjectCN;
 		}
+		_logger.debug("{0} ({1})", sSubjectCN, sIssuerCN);
 		// else non-self-signed certificate
 		// Alias is the subject CN followed by the issuer CN in parenthesis
 		return MessageFormat.format("{0} ({1})", sSubjectCN, sIssuerCN);
 	}
+	
+	
+	public static String getCommonName(X500Principal name) {
+        if (name == null) {
+            return null;
+        }
+        String value = name.getName();
+        
+        if(value.indexOf(",") > -1) {
+            value = value.split(",")[0];
+        }
+        
+        if(value.indexOf("=")>-1) {
+            value = value.split("=")[1];
+        }
+        
+        return value;
+    }
+	
 }

+ 6 - 2
maxkey-common/src/main/java/org/maxkey/crypto/cert/X509V3CertGen.java

@@ -61,12 +61,16 @@ public final class X509V3CertGen {
 		PrivateKey privateKey=keyPair.getPrivate();
 		 
 		SubjectPublicKeyInfo subjectPublicKeyInfo = null;  
+		ASN1InputStream publicKeyInputStream =null;
 		try {
-    		Object aiStream=new ASN1InputStream(publicKey.getEncoded()).readObject();
+		    publicKeyInputStream =new ASN1InputStream(publicKey.getEncoded());
+    		Object aiStream=publicKeyInputStream.readObject();
     		subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(aiStream);  
 		} catch (IOException e1) {  
 			e1.printStackTrace();  
-		}  
+		} finally {
+		    if(publicKeyInputStream !=null)publicKeyInputStream.close();
+		}
 	        
 	        
 		X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(x500Name,

+ 0 - 5
maxkey-common/src/main/java/org/maxkey/crypto/jwt/encryption/service/impl/RecipientJwtEncryptionAndDecryptionServiceBuilder.java

@@ -23,14 +23,9 @@ package org.maxkey.crypto.jwt.encryption.service.impl;
 import java.security.NoSuchAlgorithmException;
 import java.security.spec.InvalidKeySpecException;
 import java.text.ParseException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.log4j.Logger;
 import org.maxkey.crypto.jose.keystore.JWKSetKeyStore;
 import org.maxkey.crypto.jwt.encryption.service.JwtEncryptionAndDecryptionService;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
 import com.nimbusds.jose.JOSEException;
 import com.nimbusds.jose.jwk.JWKSet;
 

+ 0 - 3
maxkey-common/src/main/java/org/maxkey/crypto/jwt/signer/service/impl/SymmetricCacheService.java

@@ -34,9 +34,6 @@ import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import com.nimbusds.jose.jwk.JWK;
-import com.nimbusds.jose.jwk.KeyUse;
-import com.nimbusds.jose.jwk.OctetSequenceKey;
-import com.nimbusds.jose.util.Base64URL;
 
 /**
  * Creates and caches symmetrical validators for clients based on client secrets.

+ 0 - 3
maxkey-common/src/main/java/org/maxkey/crypto/jwt/signer/service/impl/SymmetricSigningAndValidationServiceBuilder.java

@@ -30,9 +30,6 @@ import org.maxkey.crypto.jwt.signer.service.JwtSigningAndValidationService;
 import com.google.common.collect.ImmutableMap;
 import com.nimbusds.jose.JOSEException;
 import com.nimbusds.jose.jwk.JWK;
-import com.nimbusds.jose.jwk.KeyUse;
-import com.nimbusds.jose.jwk.OctetSequenceKey;
-import com.nimbusds.jose.util.Base64URL;
 
 /**
  * @author Crystal.Sea

+ 0 - 2
maxkey-common/src/main/java/org/maxkey/crypto/keystore/KeyStoreLoader.java

@@ -26,9 +26,7 @@ import java.util.Enumeration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
-import org.springframework.util.ResourceUtils;
 
 /**
  * .

+ 8 - 5
maxkey-common/src/main/java/org/maxkey/crypto/keystore/KeyStoreUtil.java

@@ -56,6 +56,8 @@ import org.maxkey.crypto.Base64Utils;
 import org.maxkey.crypto.cert.CryptoException;
 import org.maxkey.crypto.cert.X509CertUtils;
 import org.maxkey.crypto.cert.X509V3CertGen;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.core.io.Resource;
 
 /**
@@ -64,7 +66,8 @@ import org.springframework.core.io.Resource;
  * UBER type keystores.
  */
 public final class KeyStoreUtil {
-
+    private static final Logger _logger = LoggerFactory.getLogger(KeyStoreUtil.class);
+    
     public static final String X509 = "X.509";
 
     /** Map of available keystore types */
@@ -536,15 +539,15 @@ public final class KeyStoreUtil {
         try {
 
             sMatchAlias = X509CertUtils.matchCertificate(keyStore, trustCert);
-            System.out.println("sMatchAlias : " + sMatchAlias);
+            _logger.debug("sMatchAlias : " + sMatchAlias);
             if (sMatchAlias != null) {
-                System.out.println("The certificate already exists in the Keystore under alias ''" + sMatchAlias
+                _logger.debug("\nThe certificate already exists in the Keystore under alias ''" + sMatchAlias
                         + "''.\nDo you still want to import it?");
             } else {
                 KeyStore[] keyStores = { keyStore };
                 if (X509CertUtils.establishTrust(keyStores, trustCert) == null) {
-                    System.out.println(
-                            "Could not establish a trust path for the certficate.\nThe certficate information will now be displayed after\nwhich you may confirm whether or not you trust the\ncertificate.");
+                    _logger.debug(
+                            "\nCould not establish a trust path for the certficate.\nThe certficate information will now be displayed after\nwhich you may confirm whether or not you trust the certificate.");
                 }
 
                 // Delete old entry first

+ 3 - 0
maxkey-common/src/main/java/org/maxkey/util/BeanConvert.java

@@ -58,6 +58,8 @@ public class BeanConvert {
 		LogFactory.getLog(BeanConvert.class).debug("bean2Map() *******************************************");
 		return mapBean;
 	}
+	
+	
 	public static <T> Object map2Bean(T bean,HashMap<?, ?> valueMap){
 		Map<?, ?> beanFiledMap=null;
 		try {
@@ -71,6 +73,7 @@ public class BeanConvert {
 		LogFactory.getLog(BeanConvert.class).debug("map2Bean() "+bean.getClass().getName());
 		int i=1;
         while (fieldit.hasNext()) {
+            @SuppressWarnings("rawtypes")
             Map.Entry entry = (Map.Entry) fieldit.next();
             String fieldName = entry.getKey().toString();
             Object value = null;

+ 5 - 4
maxkey-common/src/main/java/org/maxkey/util/BeanUtil.java

@@ -167,7 +167,8 @@ public class BeanUtil {
 		return Instance.newInstance(className, args);
 	}
 	
-	public static <T> T newInstance(Class<T> cls, Object[] args) {
+	@SuppressWarnings("unchecked")
+    public static <T> T newInstance(Class<T> cls, Object[] args) {
 		return (T) Instance.newInstance(cls, args);
 	}
 	public static Object invokeMethod(Object bean, String methodName, Object[] args)
@@ -201,7 +202,7 @@ public class BeanUtil {
 		Map<String, String> map = new HashMap<String, String>();
 		for (int i = 0; i < flds.length; i++) {
 			String name = flds[i].getName();
-			map.put(flds[i].getName(), flds[i].getType().getName());
+			map.put(name, flds[i].getType().getName());
 		}
 		return map;
 	}
@@ -311,10 +312,10 @@ public class BeanUtil {
 		}
 	}
 	
-	public static Class[] getMethodParameterTypes(Class<?> c,String methodName){
+	public static Class<?>[] getMethodParameterTypes(Class<?> c,String methodName){
 		Method []methods=c.getMethods();
 		for (Method method : methods) {
-		  Class[] parameterTypes = method.getParameterTypes();
+		  Class<?>[] parameterTypes = method.getParameterTypes();
 		  if(method.getName().equals(methodName)){
 			  return parameterTypes;
 		  }

+ 4 - 2
maxkey-common/src/main/java/org/maxkey/util/DynaBean.java

@@ -59,7 +59,8 @@ public class DynaBean {
 		beanMap.remove(name);
 	}
 	
-	public void displayValues(){
+	@SuppressWarnings("rawtypes")
+    public void displayValues(){
 		Iterator<?> beanMapit = beanMap.entrySet().iterator(); 
 		int i=1;
 		LogFactory.getLog(DynaBean.class).debug("displayValues() *******************************************");
@@ -84,7 +85,8 @@ public class DynaBean {
 		return beanMap;
 	}
 	
-	public DynaBean mapToDynaBean(Map<String, Object> map){
+	@SuppressWarnings("rawtypes")
+    public DynaBean mapToDynaBean(Map<String, Object> map){
 		
 		if(map.getClass().getName()=="java.util.HashMap"){
 			beanMap=(HashMap<String, Object>)map;

+ 2 - 2
maxkey-common/src/main/java/org/maxkey/util/Instance.java

@@ -62,7 +62,7 @@ public class Instance {
 		Class<?> newClass;
 		try {
 			newClass = Class.forName(className);
-			Class[] argsClass = new Class[args.length];
+			Class<?>[] argsClass = new Class[args.length];
 
 			for (int i = 0, j = args.length; i < j; i++) {
 				argsClass[i] = args[i].getClass();
@@ -79,7 +79,7 @@ public class Instance {
 
 	public static <T> Object newInstance(Class<T> cls, Object[] args) {
 		try {
-			Class[] argsClass = new Class[args.length];
+			Class<?>[] argsClass = new Class[args.length];
 
 			for (int i = 0, j = args.length; i < j; i++) {
 				argsClass[i] = args[i].getClass();

+ 2 - 2
maxkey-common/src/main/java/org/maxkey/util/MethodInvoke.java

@@ -38,7 +38,7 @@ public class MethodInvoke {
 	public static Object invokeMethod(Object bean, String methodName,
 			Object[] args) throws Exception {
 		Class<? extends Object> beanClass = bean.getClass();
-		Class[] argsClass = new Class[args.length];
+		Class<?>[] argsClass = new Class[args.length];
 		for (int i = 0, j = args.length; i < j; i++) {
 			argsClass[i] = args[i].getClass();
 			//LogFactory.getLog(MethodInvoke.class).debug("invokeMethod args : "+args[i]+" argsClass:"+argsClass[i]);
@@ -59,7 +59,7 @@ public class MethodInvoke {
 
 	public static Object invokeStaticMethod(Class<?> beanClass, String methodName,
 			Object[] args) throws Exception {
-		Class[] argsClass = new Class[args.length];
+		Class<?>[] argsClass = new Class[args.length];
 		for (int i = 0, j = args.length; i < j; i++) {
 			argsClass[i] = args[i].getClass();
 			//LogFactory.getLog(MethodInvoke.class).debug("invokeStaticMethod args : "+args[i]+" argsClass:"+argsClass[i]);

+ 193 - 0
maxkey-common/src/test/java/org/maxkey/Copyright4RZ.java

@@ -0,0 +1,193 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top ]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.maxkey;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+ 
+/**
+ * 给java文件批量添加License信息.
+ * @author MaxKey Copyright Adder
+ *
+ */
+public class Copyright4RZ {   
+    // 存放java文件的文件夹,必须是文件夹
+    private static String srcFolder = "D:\\MaxKey\\Workspaces\\maxkey\\MaxKey\\maxkey-webs\\maxkey-web-mgt";
+  
+    //已添加标识
+    private static String copyRightText = "http://www.apache.org/licenses/LICENSE-2.0";
+    //扫描目录
+    private String folder;
+    //待添加所以文件统计
+    private long fileCount = 0;
+    //添加的问题就统计
+    private long copyRightFileCount = 0;
+    private static String lineSeperator = System.getProperty("line.separator");
+    private static String encode = "UTF-8";
+    private static OutputStreamWriter writer;
+    
+    static {
+        try {
+            writer = new OutputStreamWriter(new FileOutputStream("D:/MaxKey/code.txt"), encode);
+        } catch (UnsupportedEncodingException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (FileNotFoundException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+    /**
+     * Copyright.
+     * @param folder java文件夹.
+     * @param copyRight 版权内容.
+     */
+    public Copyright4RZ(String folder, String copyRight) {
+        this.folder = folder;
+    }
+    
+    /**
+     * main .
+     * @param args String
+     * @throws IOException  IOException
+     */
+    public static void main(String[] args) throws IOException {
+        // 从文件读取版权内容
+        // 在D盘创建一个copyright.txt文件,把版权内容放进去即可
+        String copyright = readCopyrightFromFile(
+                Copyright4RZ.class.getResource("copyright.txt").getFile());        
+        new Copyright4RZ(srcFolder, copyright).process();
+        
+        writer.close();
+    }
+    
+    /**
+     * process.
+     * @throws IOException not
+     */
+    public void process() throws IOException {
+        this.addCopyright(new File(folder));
+        System.out.println("fileCount " + fileCount);
+        System.out.println("copyRightFileCount " + copyRightFileCount);
+    }
+ 
+    private void addCopyright(File folder) throws IOException {
+        File[] files = folder.listFiles();
+ 
+        if (files == null || files.length == 0) {
+            return;
+        }
+ 
+        for (File f : files) {
+            if (f.isFile()) {
+                doAddCopyright(f);
+            } else {
+                addCopyright(f);
+            }
+        }
+    }
+ 
+    private void doAddCopyright(File file) throws IOException {
+        String fileName = file.getName();
+        boolean isJavaFile = fileName.toLowerCase().endsWith(".java");
+        //boolean isJavaFile = fileName.toLowerCase().endsWith(".ftl");
+        this.fileCount++;
+        if (isJavaFile) {
+            copyRightFileCount++;
+            System.out.println(file.getAbsolutePath());
+            try {
+                this.doWrite(file);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+    
+    private void doWrite(File file) throws IOException {
+        StringBuilder javaFileContent = new StringBuilder();
+        String line = null;
+        boolean isAddCopyrightFile = isAddCopyrightFile(file.getAbsolutePath());
+        // 先添加copyright到文件头
+        //javaFileContent.append(copyRight).append(lineSeperator);
+        // 追加剩余内容
+        BufferedReader br = new BufferedReader(
+                new InputStreamReader(new FileInputStream(file), encode));
+     
+        int i=0;
+        while ((line = br.readLine()) != null) {
+            if(isAddCopyrightFile && i< 16) {
+                i++;
+                continue;
+            }
+            if(line.equals("")
+                    ||line.replaceAll(" ", "").equals("")
+                    ||line.replaceAll("\t", "").equals("")
+                    ) {
+                
+            }else {
+                javaFileContent.append(line).append(lineSeperator);
+            }
+        }  
+        
+        //OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file), encode);
+        writer.write(javaFileContent.toString());
+       
+        br.close();  
+    }
+    
+    private static String readCopyrightFromFile(String copyFilePath) throws IOException {
+        StringBuilder copyright = new StringBuilder();
+        
+        String line = null;
+        
+        BufferedReader br = new BufferedReader(
+                new InputStreamReader(new FileInputStream(copyFilePath), encode));
+       
+        while ((line = br.readLine()) != null) {
+            copyright.append(line).append(lineSeperator);
+        }
+        br.close();
+        
+        return copyright.toString();
+    }
+    
+    private static boolean isAddCopyrightFile(String filePath) throws IOException {
+        boolean isAddCopyright = false;
+        String line = null;
+        
+        BufferedReader br = new BufferedReader(
+                new InputStreamReader(new FileInputStream(filePath), encode));
+       
+        while ((line = br.readLine()) != null) {
+            if (line.indexOf(copyRightText) > -1) {
+                isAddCopyright = true;
+                break;
+            }
+        }
+        br.close();
+        
+        return isAddCopyright;
+    }
+ 
+}

+ 1 - 4
maxkey-common/src/test/java/org/maxkey/cache/CacheFactoryTest.java

@@ -22,11 +22,8 @@ package org.maxkey.cache;
 
 import java.util.ArrayList;
 
-import org.maxkey.cache.AbstractCache;
-import org.maxkey.cache.CacheFactory;
-
 /**
- * @author amarsoft
+ * @author Crystal.sea
  *
  */
 public class CacheFactoryTest {

+ 0 - 2
maxkey-common/src/test/java/org/maxkey/cache/RandomCache.java

@@ -22,8 +22,6 @@ package org.maxkey.cache;
 
 import java.util.Random;
 
-import org.maxkey.cache.AbstractCache;
-
 /**
  * @author amarsoft
  *

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/crypto/Base64UtilsTest.java

@@ -18,7 +18,6 @@
 package org.maxkey.crypto;
 
 import org.junit.Test;
-import org.maxkey.crypto.Base64Utils;
 
 public class Base64UtilsTest {
 

+ 0 - 3
maxkey-common/src/test/java/org/maxkey/crypto/DigestUtilsTest.java

@@ -18,10 +18,7 @@
 package org.maxkey.crypto;
 
 import java.time.Instant;
-import java.util.Date;
-
 import org.junit.Test;
-import org.maxkey.crypto.DigestUtils;
 
 public class DigestUtilsTest {
 /*

+ 0 - 2
maxkey-common/src/test/java/org/maxkey/crypto/Md5SumTest.java

@@ -20,8 +20,6 @@ package org.maxkey.crypto;
 import java.io.File;
 import java.io.FileNotFoundException;
 
-import org.maxkey.crypto.Md5Sum;
-
 public class Md5SumTest {
 
 	public Md5SumTest() {

+ 2 - 4
maxkey-common/src/test/java/org/maxkey/crypto/RSAUtilsTest.java

@@ -21,13 +21,11 @@ import java.security.Key;
 import java.util.Map;
 
 import org.junit.Test;
-import org.maxkey.crypto.Base64Utils;
-import org.maxkey.crypto.HexUtils;
-import org.maxkey.crypto.RSAUtils;
+
 
 public class RSAUtilsTest {
 
-	//@Test
+	@Test
 	public void test() throws Exception {
 
 		// ˽Կ���ܡ�����Կ����

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/crypto/ReciprocalUtilsTest.java

@@ -20,7 +20,6 @@ package org.maxkey.crypto;
 import java.io.UnsupportedEncodingException;
 
 import org.junit.Test;
-import org.maxkey.crypto.ReciprocalUtils;
 
 public class ReciprocalUtilsTest {
 	@Test

+ 1 - 2
maxkey-common/src/test/java/org/maxkey/crypto/cert/X509V3CertGenTest.java

@@ -26,11 +26,10 @@ import java.util.Date;
 
 import org.joda.time.DateTime;
 import org.junit.Test;
-import org.maxkey.crypto.cert.X509V3CertGen;
 
 public class X509V3CertGenTest {
 
-	//@Test
+	@Test
 	public void generateV3() throws Exception {
 		Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
 		KeyPair keyPair =X509V3CertGen.genRSAKeyPair();

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/crypto/signature/DsaSignerTest.java

@@ -21,7 +21,6 @@ import java.util.Map;
 
 import org.junit.Test;
 import org.maxkey.crypto.KeyPairUtil;
-import org.maxkey.crypto.signature.DsaSigner;
 
 public final class DsaSignerTest {
 	@Test

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/crypto/signature/RsaSignerTest.java

@@ -24,7 +24,6 @@ import java.util.Map;
 
 import org.junit.Test;
 import org.maxkey.crypto.KeyPairUtil;
-import org.maxkey.crypto.signature.RsaSigner;
 
 
 public final class RsaSignerTest  {

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/mail/MailTest.java

@@ -20,7 +20,6 @@ package org.maxkey.mail;
 import org.apache.commons.mail.DefaultAuthenticator;
 import org.apache.commons.mail.Email;
 import org.apache.commons.mail.SimpleEmail;
-import org.junit.Test;
 
 public class MailTest {
 	

+ 1 - 0
maxkey-common/src/test/java/org/maxkey/otp/algorithm/RQcodeTest.java

@@ -95,6 +95,7 @@ END:VCARD
         	 "REV:2008-04-24T19:52:43Z\n" +
         	 "END:VCARD\n" ;
         	 
+        	 System.out.println(str);
             //String str = "CN:男;COP:公司;ZW:职务";// 二维码内容  
             String path = "D:\\hwy.png";  
             BitMatrix byteMatrix;  

+ 0 - 2
maxkey-common/src/test/java/org/maxkey/util/DateUtilsTest.java

@@ -19,8 +19,6 @@ package org.maxkey.util;
 
 import java.util.Date;
 
-import org.maxkey.util.DateUtils;
-
 public class DateUtilsTest {
 	
 	/**

+ 0 - 2
maxkey-common/src/test/java/org/maxkey/util/EthernetAddressTest.java

@@ -17,8 +17,6 @@
 
 package org.maxkey.util;
 
-import org.maxkey.util.EthernetAddress;
-
 public class EthernetAddressTest {
 
 	public static void main(String[] args) {

+ 0 - 2
maxkey-common/src/test/java/org/maxkey/util/MacAddressTest.java

@@ -17,8 +17,6 @@
 
 package org.maxkey.util;
 
-import org.maxkey.util.MacAddress;
-
 public class MacAddressTest {
 
 	public static void main(String[] args) {

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/util/ObjectTransformerTest.java

@@ -18,7 +18,6 @@
 package org.maxkey.util;
 
 import java.util.HashMap;
-import org.maxkey.util.ObjectTransformer;
 
 public class ObjectTransformerTest {
 

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/util/PathUtilsTest.java

@@ -18,7 +18,6 @@
 package org.maxkey.util;
 
 import org.junit.Test;
-import org.maxkey.util.PathUtils;
 
 public class PathUtilsTest {
 	@Test

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/util/StringGeneratorTest.java

@@ -20,7 +20,6 @@ package org.maxkey.util;
 import java.util.UUID;
 
 import org.junit.Test;
-import org.maxkey.util.StringGenerator;
 
 public class StringGeneratorTest {
 	@Test

+ 0 - 1
maxkey-common/src/test/java/org/maxkey/util/UUIDGeneratorTest.java

@@ -22,7 +22,6 @@ import java.util.Date;
 
 import org.maxkey.uuid.UUID;
 import org.junit.Test;
-import org.maxkey.util.UUIDGenerator;
 
 public class UUIDGeneratorTest {
 	

+ 0 - 16
maxkey-common/src/test/java/org/maxkey/util/XMLHelperTest.java

@@ -17,24 +17,8 @@
 
 package org.maxkey.util;
 
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Map;
-
 import org.junit.Test;
-import org.maxkey.pretty.PrettyFactory;
 import org.maxkey.pretty.impl.XMLHelper;
-import org.w3c.dom.DOMConfiguration;
-import org.w3c.dom.DOMImplementation;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.ls.DOMImplementationLS;
-import org.w3c.dom.ls.LSOutput;
-import org.w3c.dom.ls.LSSerializer;
-import org.w3c.dom.ls.LSSerializerFilter;
-
-import net.shibboleth.utilities.java.support.collection.LazyMap;
 
 public class XMLHelperTest {
 

+ 7 - 5
maxkey-core/src/main/java/org/maxkey/autoconfigure/MvcAutoConfiguration.java

@@ -32,7 +32,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.actuate.endpoint.http.ActuatorMediaType;
+import org.springframework.boot.actuate.endpoint.ApiVersion;
 import org.springframework.boot.web.server.ConfigurableWebServerFactory;
 import org.springframework.boot.web.server.ErrorPage;
 import org.springframework.boot.web.server.WebServerFactoryCustomizer;
@@ -164,6 +164,7 @@ public class MvcAutoConfiguration implements InitializingBean {
         mediaTypesList.add(MediaType.APPLICATION_XML);
         mediaTypesList.add(MediaType.TEXT_XML);
         mediaTypesList.add(MediaType.TEXT_PLAIN);
+        _logger.debug("marshallingHttpMessageConverter MediaTypes " + mediaTypesList);
         marshallingHttpMessageConverter.setSupportedMediaTypes(mediaTypesList);
         return marshallingHttpMessageConverter;
     }
@@ -178,9 +179,10 @@ public class MvcAutoConfiguration implements InitializingBean {
                 new MappingJackson2HttpMessageConverter();
         ArrayList<MediaType> mediaTypesList = new ArrayList<MediaType>();
         mediaTypesList.add(MediaType.APPLICATION_JSON);
-        mediaTypesList.add(MediaType.valueOf(ActuatorMediaType.V2_JSON));
-        mediaTypesList.add(MediaType.valueOf(ActuatorMediaType.V3_JSON));
+        mediaTypesList.add(MediaType.valueOf(ApiVersion.V2.getProducedMimeType().toString()));
+        mediaTypesList.add(MediaType.valueOf(ApiVersion.V3.getProducedMimeType().toString()));
         //mediaTypesList.add(MediaType.TEXT_PLAIN);
+        _logger.debug("mappingJacksonHttpMessageConverter MediaTypes " + mediaTypesList);
         mappingJacksonHttpMessageConverter.setSupportedMediaTypes(mediaTypesList);
         return mappingJacksonHttpMessageConverter;
     }
@@ -191,8 +193,8 @@ public class MvcAutoConfiguration implements InitializingBean {
      */
     @Bean (name = "stringHttpMessageConverter")
     public HttpMessageConverter<String> responseBodyConverter() {
-        StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
-                Charset.forName("UTF-8"));
+        StringHttpMessageConverter stringHttpMessageConverter = 
+                new StringHttpMessageConverter(Charset.forName("UTF-8"));
         return stringHttpMessageConverter;
     }
     

+ 2 - 1
maxkey-core/src/main/java/org/maxkey/autoconfigure/SwaggerConfig.java

@@ -52,6 +52,7 @@ public class SwaggerConfig {
     }
     
     //    配置swagger信息
+    @SuppressWarnings(value = { })
     private ApiInfo apiInfo() {
         Contact contact = new Contact(
                                 "MaxKey.top", 
@@ -66,6 +67,6 @@ public class SwaggerConfig {
                 contact,
                 "Apache License, Version 2.0",
                 "http://www.apache.org/licenses/LICENSE-2.0",
-                new ArrayList());
+                new ArrayList<>());
     }
 }

+ 1 - 4
maxkey-core/src/main/java/org/maxkey/configuration/ApplicationConfig.java

@@ -17,8 +17,6 @@
 
 package org.maxkey.configuration;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
@@ -37,8 +35,7 @@ import org.springframework.stereotype.Component;
 @Component
 @Configuration
 public class ApplicationConfig {
-    private static final Logger _logger = LoggerFactory.getLogger(ApplicationConfig.class);
-
+    
     @Autowired
     EmailConfig emailConfig;
     

+ 0 - 1
maxkey-core/src/main/java/org/maxkey/entity/xml/UserInfoXML.java

@@ -20,7 +20,6 @@ package org.maxkey.entity.xml;
 import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.mybatis.jpa.persistence.JpaBaseEntity;
-import org.apache.mybatis.jpa.persistence.JpaBaseEntity;
 
 /**
  * xml can not include array , MultipartFile

+ 2 - 2
maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnection.java

@@ -67,7 +67,7 @@ public class RedisConnection {
 	 * @param seconds
 	 * @param value
 	 */
-	public  void setex(String key,int seconds, String value){
+	public  void setex(String key,long seconds, String value){
 		if(seconds==0){
 			conn.setex(key, RedisConnectionFactory.DEFAULT_CONFIG.DEFAULT_LIFETIME, value);
 		}else{
@@ -103,7 +103,7 @@ public class RedisConnection {
 		return null;
 	}
 	
-	public void expire(String key,int seconds){
+	public void expire(String key,long seconds){
 		conn.expire(key, seconds);
 	}
 	

+ 1 - 1
maxkey-core/src/main/java/org/maxkey/persistence/redis/RedisConnectionFactory.java

@@ -61,7 +61,7 @@ public class RedisConnectionFactory {
         /**
          * 默认过期时间
          */
-        public static int DEFAULT_LIFETIME = 600;
+        public static long DEFAULT_LIFETIME = 600;
     }
 
     JedisPoolConfig poolConfig;

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/BasePathTagDirective.java

@@ -45,6 +45,7 @@ public class BasePathTagDirective implements TemplateDirectiveModel {
     private HttpServletRequest request;
 	
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 	    

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/BaseTagDirective.java

@@ -42,6 +42,7 @@ public class BaseTagDirective implements TemplateDirectiveModel {
     private HttpServletRequest request;
 
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		//String url = params.get(URL).toString();

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/BrowserTagDirective.java

@@ -42,6 +42,7 @@ public class BrowserTagDirective implements TemplateDirectiveModel {
     private HttpServletRequest request;
 	
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		String browser = params.get("name").toString();

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/CurrUrlTagDirective.java

@@ -42,6 +42,7 @@ public class CurrUrlTagDirective implements TemplateDirectiveModel {
     private HttpServletRequest request;
 
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		//String url = params.get(URL).toString();

+ 2 - 6
maxkey-core/src/main/java/org/maxkey/web/tag/DateTagDirective.java

@@ -20,10 +20,7 @@ package org.maxkey.web.tag;
 import java.io.IOException;
 import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-
 import org.maxkey.util.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import freemarker.core.Environment;
 import freemarker.template.TemplateDirectiveBody;
@@ -39,10 +36,9 @@ import freemarker.template.TemplateModel;
 
 @FreemarkerTag("date")
 public class DateTagDirective implements TemplateDirectiveModel {
-	@Autowired
-    private HttpServletRequest request;
-	
+
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		String dateValue = params.get("value").toString();

+ 1 - 1
maxkey-core/src/main/java/org/maxkey/web/tag/DialogTagDirective.java

@@ -22,7 +22,6 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.maxkey.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import freemarker.core.Environment;
@@ -53,6 +52,7 @@ public class DialogTagDirective implements TemplateDirectiveModel {
 	private String text;
 	
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/GenIdTagDirective.java

@@ -37,6 +37,7 @@ import freemarker.template.TemplateModel;
 public class GenIdTagDirective implements TemplateDirectiveModel {
 	
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		env.getOut().append(UUID.randomUUID().toString().toLowerCase());

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/ParameterTagDirective.java

@@ -45,6 +45,7 @@ public class ParameterTagDirective implements TemplateDirectiveModel {
 	
 
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 			name=params.get("name").toString();

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/PathVarTagDirective.java

@@ -45,6 +45,7 @@ public class PathVarTagDirective implements TemplateDirectiveModel {
 	String pathVariable;
 
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		

+ 1 - 6
maxkey-core/src/main/java/org/maxkey/web/tag/RedirectTagDirective.java

@@ -18,18 +18,12 @@
 package org.maxkey.web.tag;
 
 import java.io.IOException;
-import java.util.Locale;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.servlet.support.RequestContextUtils;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.servlet.support.RequestContext;
-import org.springframework.web.servlet.tags.RequestContextAwareTag;
-
 import freemarker.core.Environment;
 import freemarker.template.TemplateDirectiveBody;
 import freemarker.template.TemplateDirectiveModel;
@@ -51,6 +45,7 @@ public class RedirectTagDirective implements TemplateDirectiveModel {
 	private String basePath = null;
 	
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 			String location=params.get("url").toString();

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/StaticTagDirective.java

@@ -38,6 +38,7 @@ public class StaticTagDirective implements TemplateDirectiveModel {
 	
 
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		 

+ 1 - 0
maxkey-core/src/main/java/org/maxkey/web/tag/TreeTagDirective.java

@@ -59,6 +59,7 @@ public class TreeTagDirective implements TemplateDirectiveModel {
 	
 
 	@Override
+	@SuppressWarnings("rawtypes")
 	public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
 			throws TemplateException, IOException {
 		 id = params.get("id").toString();

+ 2 - 0
maxkey-core/src/test/java/org/maxkey/EscapeHtml4Test.java

@@ -20,11 +20,13 @@ package org.maxkey;
 import java.sql.SQLException;
 
 import org.apache.commons.text.StringEscapeUtils;
+import org.springframework.boot.actuate.endpoint.ApiVersion;
 
 public class EscapeHtml4Test {
 	public static void main(String[] args) throws SQLException {
 		String value="<IMG SRC=javascript:alert('XSS')<javascript>>";
 		System.out.println(StringEscapeUtils.escapeHtml4(value));
 		System.out.println(StringEscapeUtils.escapeEcmaScript(value));
+		System.out.println(ApiVersion.V2.getProducedMimeType().toString());
 	}
 }

+ 0 - 2
maxkey-core/src/test/java/org/maxkey/persistence/ldap/ActiveDirectoryUtilsTest.java

@@ -20,8 +20,6 @@ package org.maxkey.persistence.ldap;
 import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
 
-import org.maxkey.persistence.ldap.ActiveDirectoryUtils;
-
 public class ActiveDirectoryUtilsTest {
 	public static void main(String[] args) throws Exception {
 		String trustStore="D:/JavaIDE/jdk1.6.0_30/jre/lib/security/cacerts";

+ 1 - 1
maxkey-gataway/src/main/resources/application.yml

@@ -1,7 +1,7 @@
 #端口号
 application:
   name: maxkey-gateway-server
-  formatted-version: v2.9.0 GA
+  formatted-version: v3.0.0 GA
 server:
   port: 9000
 spring:

+ 5 - 4
maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimOrganizationController.java

@@ -59,7 +59,7 @@ public class ScimOrganizationController {
     public ResponseEntity<MappingJacksonValue> create(@RequestBody  Organization user,
                                                       @RequestParam(required = false) String attributes,
                                                       UriComponentsBuilder builder) throws IOException {
-        Organization createdUser = null;
+        //Organization createdUser = null;
         return null;
     }
 
@@ -68,7 +68,7 @@ public class ScimOrganizationController {
                                                        @RequestBody Organization user,
                                                        @RequestParam(required = false) String attributes)
             throws IOException {
-        Organization createdUser = null;
+        //Organization createdUser = null;
         return null;
     }
 
@@ -86,7 +86,7 @@ public class ScimOrganizationController {
 
     @RequestMapping(value = "/.search", method = RequestMethod.POST)
     public MappingJacksonValue searchWithPost(@RequestParam Map<String, String> requestParameters) {
-        ScimSearchResult<User> scimSearchResult = null;
+        //ScimSearchResult<User> scimSearchResult = null;
         /*
                 requestParameters.get("filter"),
                 requestParameters.get("sortBy"),
@@ -94,7 +94,8 @@ public class ScimOrganizationController {
                 Integer.parseInt(requestParameters.getOrDefault("count", "" + ScimServiceProviderConfigController.MAX_RESULTS)),
                 Integer.parseInt(requestParameters.getOrDefault("startIndex", "1")); // scim default
 */
-        String attributes = (requestParameters.containsKey("attributes") ? requestParameters.get("attributes") : "");
+        //String attributes = (requestParameters.containsKey("attributes") ? requestParameters.get("attributes") : "");
+        
         return null;
     }
 }

+ 5 - 5
maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/controller/ScimUserController.java

@@ -50,7 +50,7 @@ public class ScimUserController {
     @RequestMapping(value = "/{id}", method = RequestMethod.GET)
     public MappingJacksonValue getUser(@PathVariable String id,
                                        @RequestParam(required = false) String attributes) {
-        User user = null;
+        //User user = null;
         return null;
     }
 
@@ -58,7 +58,7 @@ public class ScimUserController {
     public ResponseEntity<MappingJacksonValue> create(@RequestBody  User user,
                                                       @RequestParam(required = false) String attributes,
                                                       UriComponentsBuilder builder) throws IOException {
-        User createdUser = null;
+        //User createdUser = null;
         return null;
     }
 
@@ -67,7 +67,7 @@ public class ScimUserController {
                                                        @RequestBody User user,
                                                        @RequestParam(required = false) String attributes)
             throws IOException {
-        User createdUser = null;
+        //User createdUser = null;
         return null;
     }
 
@@ -85,7 +85,7 @@ public class ScimUserController {
 
     @RequestMapping(value = "/.search", method = RequestMethod.POST)
     public MappingJacksonValue searchWithPost(@RequestParam Map<String, String> requestParameters) {
-        ScimSearchResult<User> scimSearchResult = null;
+        //ScimSearchResult<User> scimSearchResult = null;
         /*
                 requestParameters.get("filter"),
                 requestParameters.get("sortBy"),
@@ -93,7 +93,7 @@ public class ScimUserController {
                 Integer.parseInt(requestParameters.getOrDefault("count", "" + ScimServiceProviderConfigController.MAX_RESULTS)),
                 Integer.parseInt(requestParameters.getOrDefault("startIndex", "1")); // scim default
 */
-        String attributes = (requestParameters.containsKey("attributes") ? requestParameters.get("attributes") : "");
+        //String attributes = (requestParameters.containsKey("attributes") ? requestParameters.get("attributes") : "");
         return null;
     }
 }

+ 0 - 4
maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString2ObjectTest.java

@@ -17,10 +17,6 @@
 
 package org.maxkey.identity.scim.resources;
 
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
 import org.maxkey.pretty.impl.JsonPretty;
 import org.maxkey.util.JsonUtils;
 

+ 5 - 11
maxkey-persistence/src/test/java/org/apache/mybatis/jpa/test/FormBasedDetailsServiceTest.java

@@ -94,12 +94,8 @@ public class FormBasedDetailsServiceTest {
 		
 		_logger.info("queryPageResults...");
 		AppsFormBasedDetails formBasedDetails=new AppsFormBasedDetails();
-		 //student.setId("af04d610-6092-481e-9558-30bd63ef783c");
-		// student.setStdGender("M");
-		 //student.setStdMajor(政治");
-		 //student.setPageResults(10);
-		 //student.setPage(2);
-		 //_logger.info("queryPageResults "+service.queryPageResults(formBasedDetails));
+		 formBasedDetails.setPageNumber(2);
+		 _logger.info("queryPageResults "+service.queryPageResults(formBasedDetails));
 	}
 	
 	@Test
@@ -107,12 +103,10 @@ public class FormBasedDetailsServiceTest {
 
 		_logger.info("queryPageResults by mapperId...");
 		 AppsFormBasedDetails formBasedDetails=new AppsFormBasedDetails();
-		// student.setStdGender("M");
-		 //student.setStdMajor(政治");
-		// student.setPageResults(10);
-		// student.setPage(2);
+
+		 formBasedDetails.setPageNumber(2);
 		 
-		 //_logger.info("queryPageResults by mapperId "+service.queryPageResults("queryPageResults1",formBasedDetails));
+		 _logger.info("queryPageResults by mapperId "+service.queryPageResults("queryPageResults1",formBasedDetails));
 		 
 	}
 	

+ 0 - 2
maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/AbstractTicketException.java

@@ -25,8 +25,6 @@ package org.maxkey.authz.cas.endpoint.ticket;
  * @since 4.2.0
  */
 public abstract class AbstractTicketException{
-    private static final long serialVersionUID = -5128676415951733624L;
-
     String code;
     String msg;
     Throwable throwable;

+ 0 - 2
maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/AbstractWebApplicationService.java

@@ -33,8 +33,6 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class AbstractWebApplicationService  {
 
-    private static final long serialVersionUID = 610105280927740076L;
-
     /** Logger instance. **/
     protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractWebApplicationService.class);
 

+ 1 - 1
maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/Service.java

@@ -31,7 +31,7 @@ package org.maxkey.authz.cas.endpoint.ticket;
  * </p>
  */
 public interface Service {
-	 boolean getId();
+	 String getId();
 
     boolean matches(Service service);
 }

+ 0 - 2
maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/SimpleWebApplicationServiceImpl.java

@@ -26,8 +26,6 @@ package org.maxkey.authz.cas.endpoint.ticket;
  */
 public final class SimpleWebApplicationServiceImpl extends AbstractWebApplicationService {
 
-    private static final long serialVersionUID = 8334068957483758042L;
-
     public SimpleWebApplicationServiceImpl(final String id) {
         this(id, id, null);
     }

+ 1 - 5
maxkey-protocols/maxkey-protocol-cas/src/main/java/org/maxkey/authz/cas/endpoint/ticket/generator/InetAddressUtils.java

@@ -17,9 +17,6 @@
 
 package org.maxkey.authz.cas.endpoint.ticket.generator;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.net.InetAddress;
 
 /**
@@ -29,8 +26,7 @@ import java.net.InetAddress;
  * @since 5.0.0
  */
 public final class InetAddressUtils {
-    private static final Logger logger = LoggerFactory.getLogger(InetAddressUtils.class);
-
+   
     private InetAddressUtils() {
     }
 

+ 1 - 2
maxkey-protocols/maxkey-protocol-cas/src/test/java/org/maxkey/web/authorize/endpoint/RestTestClient.java

@@ -42,7 +42,6 @@ public class RestTestClient {
         String password ="maxkey";
         String serviceUrl = "http://cas.demo.maxkey.top:9521/demo-cas/";
         CasConfiguration casConfiguration = new CasConfiguration(casUrlPrefix);
-        final CasRestAuthenticator authenticator = new CasRestAuthenticator(casConfiguration);
         final CasRestFormClient client = new CasRestFormClient(casConfiguration,"username","password");
         final MockHttpServletRequest request = new MockHttpServletRequest();
         final MockHttpServletResponse response = new MockHttpServletResponse();
@@ -61,7 +60,7 @@ public class RestTestClient {
         
         Map<String,Object> attributes = casProfile.getAttributes();
         Set<Map.Entry<String,Object>> mapEntries = attributes.entrySet();
-        for (Map.Entry entry : mapEntries) {
+        for (Map.Entry<String,Object> entry : mapEntries) {
             System.out.println(entry.getKey() + ":" + entry.getValue());
         }
         client.destroyTicketGrantingTicket(profile,webContext);

+ 2 - 1
maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiCndnsApiMailAdapter.java

@@ -64,7 +64,8 @@ public class ExtendApiCndnsApiMailAdapter extends AbstractAuthorizeAdapter {
 		return null;
 	}
 
-	@Override
+	@SuppressWarnings("unchecked")
+    @Override
 	public ModelAndView authorize(UserInfo userInfo, Object app, String data,ModelAndView modelAndView) {
 		HttpsTrusts.beforeConnection();
 		

+ 4 - 1
maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiQQExmailAdapter.java

@@ -53,18 +53,21 @@ public class ExtendApiQQExmailAdapter extends AbstractAuthorizeAdapter {
 		return null;
 	}
 
-	@Override
+	@SuppressWarnings("unchecked")
+    @Override
 	public ModelAndView authorize(UserInfo userInfo, Object app, String data,ModelAndView modelAndView) {
 		HttpsTrusts.beforeConnection();
 		
 		Apps details=(Apps)app;
 		String username = data.substring(0, data.indexOf("="));
 		String password = data.substring(data.indexOf("=") + 1);
+		_logger.trace("username " + username +" password " + password);
 		//extraAttrs from Applications
 		ExtraAttrs extraAttrs=null;
 		if(details.getIsExtendAttr()==1){
 			extraAttrs=new ExtraAttrs(details.getExtendAttr());
 		}
+		_logger.debug("Extra Attrs "+extraAttrs);
 		OAuthClient tokenRestClient=new OAuthClient(
 				String.format(TOKEN_URI,details.getPrincipal(),details.getCredentials()));
 		Token token =tokenRestClient.requestAccessToken();

+ 1 - 0
maxkey-protocols/maxkey-protocol-extendapi/src/main/java/org/maxkey/authz/exapi/endpoint/adapter/ExtendApiZentaoAdapter.java

@@ -62,6 +62,7 @@ public class ExtendApiZentaoAdapter extends AbstractAuthorizeAdapter {
 		if(details.getIsExtendAttr()==1){
 			extraAttrs=new ExtraAttrs(details.getExtendAttr());
 		}
+		_logger.trace("Extra Attrs " + extraAttrs);
 		String code = details.getPrincipal();
 		String key   = details.getCredentials();
 		String time  = ""+Instant.now().getEpochSecond();

+ 5 - 0
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/common/exceptions/OAuth2ExceptionJackson2Serializer.java

@@ -26,6 +26,11 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer;
  */
 public class OAuth2ExceptionJackson2Serializer extends StdSerializer<OAuth2Exception> {
 
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -767680428859994107L;
+
     public OAuth2ExceptionJackson2Serializer() {
         super(OAuth2Exception.class);
     }

+ 2 - 2
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/jwt/JwtHelper.java

@@ -113,7 +113,7 @@ class JwtHeaderHelper {
 	static HeaderParameters parseParams(byte[] header) {
 		JsonParser jp = null;
 		try {
-			jp = f.createJsonParser(header);
+			jp = f.createParser(header);
 			String alg = null, enc = null, iv = null;
 			jp.nextToken();
 			while (jp.nextToken() != JsonToken.END_OBJECT) {
@@ -163,7 +163,7 @@ class JwtHeaderHelper {
 		JsonGenerator g = null;
 
 		try {
-			g = f.createJsonGenerator(baos);
+			g = f.createGenerator(baos);
 			g.writeStartObject();
 			g.writeStringField("alg", params.alg);
 			if (params.enc != null) {

+ 5 - 0
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/jwt/codec/Base64Codec.java

@@ -649,6 +649,11 @@ final class Base64Codec {
 
 class InvalidBase64CharacterException extends IllegalArgumentException {
 
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -616861303718228577L;
+
     InvalidBase64CharacterException(String message) {
         super(message);
     }

+ 5 - 0
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/jwt/crypto/sign/InvalidSignatureException.java

@@ -16,6 +16,11 @@ package org.maxkey.authz.oauth2.jwt.crypto.sign;
  * @author Luke Taylor
  */
 public class InvalidSignatureException extends RuntimeException {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 7078872206905207270L;
+
     public InvalidSignatureException(String message) {
         super(message);
     }

+ 0 - 2
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/OAuth2UserDetailsService.java

@@ -20,10 +20,8 @@ import org.maxkey.authn.online.OnlineTicket;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.persistence.db.LoginService;
 import org.maxkey.web.WebConstants;
-import org.maxkey.web.WebContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;

+ 6 - 3
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/approval/Approval.java

@@ -23,6 +23,7 @@ import org.maxkey.authz.oauth2.common.util.JsonDateDeserializer;
 import org.maxkey.authz.oauth2.common.util.JsonDateSerializer;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 
@@ -31,7 +32,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  * @author Vidya Val
  *
  */
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class Approval {
 
 	private String userId;
@@ -97,7 +98,8 @@ public class Approval {
 		this.scope = scope == null ? "" : scope;
 	}
 
-	@JsonSerialize(using = JsonDateSerializer.class, include = JsonSerialize.Inclusion.NON_NULL)
+	@JsonSerialize(using = JsonDateSerializer.class)
+	@JsonInclude(JsonInclude.Include.NON_NULL)
 	public Date getExpiresAt() {
 		return expiresAt;
 	}
@@ -112,7 +114,8 @@ public class Approval {
 		this.expiresAt = expiresAt;
 	}
 
-	@JsonSerialize(using = JsonDateSerializer.class, include = JsonSerialize.Inclusion.NON_NULL)
+	@JsonSerialize(using = JsonDateSerializer.class)
+	@JsonInclude(JsonInclude.Include.NON_NULL)
 	public Date getLastUpdatedAt() {
 		return lastUpdatedAt;
 	}

+ 1 - 1
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/approval/JdbcApprovalStore.java

@@ -83,7 +83,7 @@ public class JdbcApprovalStore implements ApprovalStore {
 	private boolean handleRevocationsAsExpiry = false;
 
 	public JdbcApprovalStore(DataSource dataSource) {
-		Assert.notNull(dataSource);
+		Assert.notNull(dataSource,"DataSource must not null");
 		this.jdbcTemplate = new JdbcTemplate(dataSource);
 	}
 

+ 1 - 2
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/code/RandomValueAuthorizationCodeServices.java

@@ -20,7 +20,6 @@ package org.maxkey.authz.oauth2.provider.code;
 import java.util.UUID;
 
 import org.maxkey.authz.oauth2.common.exceptions.InvalidGrantException;
-import org.maxkey.authz.oauth2.common.util.RandomValueStringGenerator;
 import org.maxkey.authz.oauth2.provider.OAuth2Authentication;
 
 /**
@@ -32,7 +31,7 @@ import org.maxkey.authz.oauth2.provider.OAuth2Authentication;
 public abstract class RandomValueAuthorizationCodeServices implements AuthorizationCodeServices {
 
 	//default Random code Generator
-	private RandomValueStringGenerator generator = new RandomValueStringGenerator();
+	//private RandomValueStringGenerator generator = new RandomValueStringGenerator();
 
 	protected abstract void store(String code, OAuth2Authentication authentication);
 

+ 0 - 3
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/CheckTokenEndpoint.java

@@ -36,14 +36,11 @@ import org.apache.commons.logging.LogFactory;
 import org.maxkey.authz.oauth2.common.OAuth2AccessToken;
 import org.maxkey.authz.oauth2.common.OAuth2Constants;
 import org.maxkey.authz.oauth2.common.exceptions.InvalidTokenException;
-import org.maxkey.authz.oauth2.common.exceptions.OAuth2Exception;
 import org.maxkey.authz.oauth2.provider.OAuth2Authentication;
 import org.maxkey.authz.oauth2.provider.token.AccessTokenConverter;
 import org.maxkey.authz.oauth2.provider.token.DefaultAccessTokenConverter;
 import org.maxkey.authz.oauth2.provider.token.ResourceServerTokenServices;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;

+ 2 - 2
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/RemoteTokenServices.java

@@ -31,6 +31,7 @@ package org.maxkey.authz.oauth2.provider.token;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.util.Base64;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
@@ -44,7 +45,6 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.http.client.ClientHttpResponse;
 import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.crypto.codec.Base64;
 import org.springframework.util.Assert;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
@@ -134,7 +134,7 @@ public class RemoteTokenServices implements ResourceServerTokenServices {
 	private String getAuthorizationHeader(String clientId, String clientSecret) {
 		String creds = String.format("%s:%s", clientId, clientSecret);
 		try {
-			return "Basic " + new String(Base64.encode(creds.getBytes("UTF-8")));
+			return "Basic " + new String(Base64.getEncoder().encodeToString(creds.getBytes("UTF-8")));
 		}
 		catch (UnsupportedEncodingException e) {
 			throw new IllegalStateException("Could not convert String");

+ 3 - 3
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/JwtAccessTokenConverter.java

@@ -33,6 +33,7 @@ import java.security.KeyPair;
 import java.security.PrivateKey;
 import java.security.interfaces.RSAPrivateKey;
 import java.security.interfaces.RSAPublicKey;
+import java.util.Base64;
 import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -62,7 +63,6 @@ import org.maxkey.authz.oauth2.provider.token.AccessTokenConverter;
 import org.maxkey.authz.oauth2.provider.token.DefaultAccessTokenConverter;
 import org.maxkey.authz.oauth2.provider.token.TokenEnhancer;
 import org.springframework.beans.factory.InitializingBean;
-import org.springframework.security.crypto.codec.Base64;
 import org.springframework.util.Assert;
 
 /**
@@ -144,7 +144,7 @@ public class JwtAccessTokenConverter implements TokenEnhancer, AccessTokenConver
         signer = new RsaSigner((RSAPrivateKey) privateKey);
         RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
         verifier = new RsaVerifier(publicKey);
-        verifierKey = "-----BEGIN PUBLIC KEY-----\n" + new String(Base64.encode(publicKey.getEncoded()))
+        verifierKey = "-----BEGIN PUBLIC KEY-----\n" + new String(Base64.getMimeEncoder().encodeToString(publicKey.getEncoded()))
                 + "\n-----END PUBLIC KEY-----";
     }
 
@@ -155,7 +155,7 @@ public class JwtAccessTokenConverter implements TokenEnhancer, AccessTokenConver
      * @param key the key to be used for signing JWTs.
      */
     public void setSigningKey(String key) {
-        Assert.hasText(key);
+        Assert.hasText(key,"key must not be empty");
         key = key.trim();
 
         this.signingKey = key;

+ 12 - 15
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/token/store/RedisTokenStore.java

@@ -43,20 +43,22 @@ import java.util.Date;
 public class RedisTokenStore implements TokenStore {
 	static final Logger _logger = LoggerFactory.getLogger(RedisTokenStore.class);
 	
-	private static final String ACCESS = "REDIS_OAUTH_V20_ACCESS_";
-	private static final String AUTH_TO_ACCESS = "REDIS_OAUTH_V20_AUTH_TO_ACCESS_";
-	private static final String AUTH = "REDIS_OAUTH_V20_AUTH_";
-	private static final String REFRESH_AUTH = "REDIS_OAUTH_V20_REFRESH_AUTH_";
-	private static final String ACCESS_TO_REFRESH = "REDIS_OAUTH_V20_ACCESS_TO_REFRESH_";
-	private static final String REFRESH = "REDIS_OAUTH_V20_REFRESH_";
-	private static final String REFRESH_TO_ACCESS = "REDIS_OAUTH_V20_REFRESH_TO_ACCESS_";
-	private static final String CLIENT_ID_TO_ACCESS = "REDIS_OAUTH_V20_CLIENT_ID_TO_ACCESS_";
-	private static final String UNAME_TO_ACCESS = "REDIS_OAUTH_V20_UNAME_TO_ACCESS_";
+	private static final String PREFIX                 = "REDIS_OAUTH_V20_";
+	
+	private static final String ACCESS                 = PREFIX + "ACCESS_";
+	private static final String AUTH_TO_ACCESS         = PREFIX + "AUTH_TO_ACCESS_";
+	private static final String AUTH                   = PREFIX + "AUTH_";
+	private static final String REFRESH_AUTH           = PREFIX + "REFRESH_AUTH_";
+	private static final String ACCESS_TO_REFRESH      = PREFIX + "ACCESS_TO_REFRESH_";
+	private static final String REFRESH                = PREFIX + "REFRESH_";
+	private static final String REFRESH_TO_ACCESS      = PREFIX + "REFRESH_TO_ACCESS_";
+	private static final String CLIENT_ID_TO_ACCESS    = PREFIX + "CLIENT_ID_TO_ACCESS_";
+	private static final String UNAME_TO_ACCESS        = PREFIX + "UNAME_TO_ACCESS_";
 
 	private final RedisConnectionFactory connectionFactory;
 	private AuthenticationKeyGenerator authenticationKeyGenerator = new DefaultAuthenticationKeyGenerator();
 	
-	private String prefix = "";
+	
 
 	public RedisTokenStore(RedisConnectionFactory connectionFactory) {
 		this.connectionFactory = connectionFactory;
@@ -66,11 +68,6 @@ public class RedisTokenStore implements TokenStore {
 		this.authenticationKeyGenerator = authenticationKeyGenerator;
 	}
 
-	
-	public void setPrefix(String prefix) {
-		this.prefix = prefix;
-	}
-
 	private RedisConnection getConnection() {
 		return connectionFactory.getConnection();
 	}

+ 2 - 1
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oidc/idtoken/OIDCIdTokenEnhancer.java

@@ -47,6 +47,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Strings;
+import com.nimbusds.jose.Algorithm;
 import com.nimbusds.jose.EncryptionMethod;
 import com.nimbusds.jose.JWEAlgorithm;
 import com.nimbusds.jose.JWEHeader;
@@ -164,7 +165,7 @@ public class OIDCIdTokenEnhancer implements TokenEnhancer {
 					logger.error("Couldn't create Jwt Encryption Service");
 				}
 			} else {
-				if (signingAlg==null||signingAlg.equals("none")) {
+				if (signingAlg==null||signingAlg.equals(Algorithm.NONE)) {
 					// unsigned ID token
 					idToken = new PlainJWT(builder.build());
 				} else {

+ 1 - 1
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/autoconfigure/Oauth20AutoConfiguration.java

@@ -150,7 +150,7 @@ public class Oauth20AutoConfiguration implements InitializingBean {
                     throws NoSuchAlgorithmException, InvalidKeySpecException, JOSEException {
         DefaultJwtEncryptionAndDecryptionService jwtEncryptionService = 
                 new DefaultJwtEncryptionAndDecryptionService(jwtSetKeyStore);
-        jwtEncryptionService.setDefaultAlgorithm(JWEAlgorithm.RSA1_5);//RSA1_5
+        jwtEncryptionService.setDefaultAlgorithm(JWEAlgorithm.RSA_OAEP_256);//RSA1_5
         jwtEncryptionService.setDefaultDecryptionKeyId("maxkey_rsa");
         jwtEncryptionService.setDefaultEncryptionKeyId("maxkey_rsa");
         return jwtEncryptionService;

+ 0 - 3
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/resources/META-INF/MANIFEST.MF

@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-

+ 6 - 2
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/consumer/endpoint/ConsumerEndpoint.java

@@ -35,6 +35,7 @@ import org.maxkey.authz.saml.common.EndpointGenerator;
 import org.maxkey.authz.saml.common.TrustResolver;
 import org.maxkey.authz.saml.service.IDService;
 import org.maxkey.authz.saml.service.TimeService;
+import org.maxkey.authz.saml20.binding.BindingAdapter;
 import org.maxkey.authz.saml20.binding.ExtractBindingAdapter;
 import org.maxkey.authz.saml20.consumer.AuthnRequestGenerator;
 import org.maxkey.authz.saml20.consumer.spring.IdentityProviderAuthenticationException;
@@ -51,6 +52,7 @@ import org.opensaml.common.binding.security.MessageReplayRule;
 import org.opensaml.saml2.core.Assertion;
 import org.opensaml.saml2.core.Response;
 import org.opensaml.saml2.core.StatusCode;
+import org.opensaml.ws.message.decoder.MessageDecodingException;
 import org.opensaml.xml.security.CriteriaSet;
 import org.opensaml.xml.security.SecurityException;
 import org.opensaml.xml.security.credential.Credential;
@@ -77,6 +79,8 @@ public class ConsumerEndpoint {
 
 	private final static Logger logger = LoggerFactory.getLogger(ConsumerEndpoint.class);
 
+	private BindingAdapter bindingAdapter;
+	
 	@Autowired
 	@Qualifier("spKeyStoreLoader")
 	private KeyStoreLoader keyStoreLoader;
@@ -129,8 +133,8 @@ public class ConsumerEndpoint {
 		initCredential(spId);
 
 		SAMLMessageContext messageContext=null;
-
-		/*try {
+		/*
+		try {
 			messageContext = bindingAdapter.extractSAMLMessageContext(request);
 		} catch (MessageDecodingException me) {
 			logger.error("Could not decode SAML Response", me);

+ 0 - 6
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/jit/ProvisioningAdapter.java

@@ -18,12 +18,6 @@
 package org.maxkey.authz.saml20.jit;
 
 
-import java.util.HashMap;
-import java.util.List;
-
-import org.maxkey.entity.UserInfo;
-
-
 public interface ProvisioningAdapter {
 
 	//HashMap<String,String> construct(UserInfo userInfo,Companys company,List<Roles> listRoles) ;

+ 0 - 1
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/authz/saml20/xml/SAML2ValidatorSuite.java

@@ -21,7 +21,6 @@ import org.opensaml.xml.Configuration;
 import org.opensaml.xml.XMLObject;
 import org.opensaml.xml.validation.ValidationException;
 import org.opensaml.xml.validation.ValidatorSuite;
-import org.springframework.beans.factory.InitializingBean;
 
 public class SAML2ValidatorSuite  {
 

+ 3 - 0
maxkey-protocols/maxkey-protocol-saml-2.0/src/main/java/org/maxkey/autoconfigure/Saml20AutoConfiguration.java

@@ -107,6 +107,7 @@ public class Saml20AutoConfiguration implements InitializingBean {
     @Bean(name = "authnResponseGenerator")
     public AuthnResponseGenerator authnResponseGenerator(TimeService timeService,IDService idService,
             @Value("${maxkey.saml.v20.idp.issuer}") String issuerEntityName) {
+        _logger.debug("issuerEntityName " + issuerEntityName);
         AuthnResponseGenerator generator = new AuthnResponseGenerator(issuerEntityName,timeService,idService);
         return generator;
     }
@@ -163,6 +164,7 @@ public class Saml20AutoConfiguration implements InitializingBean {
      * MapBasedStorageService.
      * @return mapBasedStorageService
      */
+    @SuppressWarnings("rawtypes")
     @Bean(name = "mapBasedStorageService")
     public MapBasedStorageService mapBasedStorageService() {
         MapBasedStorageService mapBasedStorageService = new MapBasedStorageService();
@@ -175,6 +177,7 @@ public class Saml20AutoConfiguration implements InitializingBean {
      * @throws IOException 
      * @throws VelocityException 
      */
+    @SuppressWarnings({ "deprecation"})
     @Bean(name = "velocityEngine")
     public VelocityEngine velocityEngine() throws VelocityException, IOException {
         VelocityEngineFactoryBean factory = new VelocityEngineFactoryBean();

+ 1 - 1
maxkey-webs/maxkey-boot-monitor/src/main/resources/application.properties

@@ -18,7 +18,7 @@
 application.title                               =MaxKey
 #for dynamic service discovery
 spring.application.name                         =maxkey-monitor
-application.formatted-version                   =v2.9.0 GA
+application.formatted-version                   =v3.0.0 GA
 #nacos
 spring.cloud.nacos.discovery.enabled            =${NACOS_DISCOVERY_ENABLED:false}
 spring.cloud.nacos.discovery.instance-enabled   =false

+ 0 - 2
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/filter/SingleSignOnFilter.java

@@ -25,7 +25,6 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 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;
@@ -47,7 +46,6 @@ public class SingleSignOnFilter implements Filter {
             ServletResponse response, FilterChain chain)throws IOException, ServletException {
 
         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);

+ 0 - 4
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/historys/contorller/HistoryLoginController.java

@@ -21,11 +21,7 @@ import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.apache.mybatis.jpa.persistence.JpaPageResults;
 import org.maxkey.entity.HistoryLogin;
-import org.maxkey.entity.HistoryLoginApps;
-import org.maxkey.entity.HistoryLogs;
-import org.maxkey.persistence.service.HistoryLoginAppsService;
 import org.maxkey.persistence.service.HistoryLoginService;
-import org.maxkey.persistence.service.HistorySystemLogsService;
 import org.maxkey.util.DateUtils;
 import org.maxkey.web.WebContext;
 import org.slf4j.Logger;

+ 0 - 1
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/HistoryLoginAppAdapter.java

@@ -21,7 +21,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.maxkey.authn.SigninPrincipal;
-import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint;
 import org.maxkey.entity.HistoryLoginApps;
 import org.maxkey.entity.UserInfo;
 import org.maxkey.entity.apps.Apps;

+ 1 - 2
maxkey-webs/maxkey-web-maxkey/src/main/java/org/maxkey/web/interceptor/PreLoginAppAdapter.java

@@ -20,7 +20,6 @@ package org.maxkey.web.interceptor;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.maxkey.entity.UserInfo;
 import org.maxkey.web.WebConstants;
 import org.maxkey.web.WebContext;
 import org.slf4j.Logger;
@@ -38,7 +37,6 @@ public class PreLoginAppAdapter  implements AsyncHandlerInterceptor {
             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);
@@ -47,6 +45,7 @@ public class PreLoginAppAdapter  implements AsyncHandlerInterceptor {
             return true;
         }
         /*
+         * UserInfo userInfo = WebContext.getUserInfo();
          * if(userInfo.getProtectedAppsMap().get(appId)!=null){
          * 
          * request.setAttribute("redirect_uri",redirect_uri);

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini