解决报警告

This commit is contained in:
BA7LZD 2020-06-16 02:19:11 +08:00
parent 0dde7ca167
commit e5f0f28bf3
7 changed files with 102 additions and 146 deletions

View File

@ -6,12 +6,7 @@ import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* @description:
* @author: joshua
* @E-mail: joshua.yin@ucloud.cn
* @date: 2018-11-29 15:15
*/
@SuppressWarnings("unused")
public class AuthPrivateUrlRequest {
@NotEmpty(message = "method is required!")
private String method;
@ -36,7 +31,7 @@ public class AuthPrivateUrlRequest {
}
public long getExpires() {
return expires.longValue();
return expires;
}
public String getOptional() {

View File

@ -3,13 +3,7 @@ package com.yuxihan.ucloud.auth.bean;
import com.google.gson.Gson;
import org.hibernate.validator.constraints.NotEmpty;
/**
* @description:
* @author: joshua
* @E-mail: joshua.yin@ucloud.cn
* @date: 2018-11-29 15:15
*/
@SuppressWarnings("unused")
public class AuthRequest {
@NotEmpty(message = "method is required!")
private String method;

View File

@ -5,7 +5,7 @@ import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.yuxihan.ucloud.auth.bean.AuthPrivateUrlRequest;
import com.yuxihan.ucloud.auth.bean.AuthRequest;
import com.yuxihan.ucloud.auth.service.UfileAuthService;
import com.yuxihan.ucloud.auth.service.UFileAuthService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
@ -13,17 +13,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @description:
* @author: joshua
* @E-mail: joshua.yin@ucloud.cn
* @date: 2018-11-29 10:37
*/
@Controller("authController")
public class AuthController {
@Autowired
private UfileAuthService ufileAuthService;
private UFileAuthService ufileAuthService;
@RequestMapping(value = "/applyAuth", method = RequestMethod.POST)
@ResponseBody
@ -33,7 +27,7 @@ public class AuthController {
// 您可以根据您的项目需求处理端传来的Optional参数集合
if (jsonElement != null)
System.out.println(jsonElement.toString());
return ufileAuthService.calculateAuthroization(requestBean);
return ufileAuthService.calculateAuthorization(requestBean);
}
@RequestMapping(value = "/applyPrivateUrlAuth", method = RequestMethod.POST)
@ -44,6 +38,6 @@ public class AuthController {
// 您可以根据您的项目需求处理端传来的Optional参数集合
if (jsonElement != null)
System.out.println(jsonElement.toString());
return ufileAuthService.calculatePrivateUrlAuthroization(requestBean);
return ufileAuthService.calculatePrivateUrlAuthorization(requestBean);
}
}

View File

@ -0,0 +1,76 @@
package com.yuxihan.ucloud.auth.service;
import com.yuxihan.ucloud.auth.bean.AuthPrivateUrlRequest;
import com.yuxihan.ucloud.auth.bean.AuthRequest;
import com.yuxihan.ucloud.auth.util.Encryptors;
import com.yuxihan.ucloud.auth.util.ParameterValidator;
import org.springframework.stereotype.Service;
import java.util.Base64;
@Service
public class UFileAuthService {
private static final String publicKey = "TOKEN_fba51889-6f2f-40d4-80dc-59a43a2e3b1c";
private static final String privateKey = "5cc9c018-41ef-4d34-9707-b8009ba7f837";
public String calculateAuthorization(AuthRequest request) {
try {
ParameterValidator.validator(request);
StringBuilder signData = new StringBuilder();
signData.append(request.getMethod()).append("\n");
signData.append(request.getContent_md5()).append("\n");
signData.append(request.getContent_type()).append("\n");
signData.append(request.getDate()).append("\n");
signData.append("/").append(request.getBucket());
signData.append("/").append(request.getKey());
if (request.getPut_policy() != null && !request.getPut_policy().isEmpty()) {
signData.append(request.getPut_policy());
}
String signature = signature(signData.toString());
StringBuilder res = new StringBuilder("UCloud ")
.append(publicKey)
.append(":")
.append(signature);
if (request.getPut_policy() != null && !request.getPut_policy().isEmpty()) {
res.append(":").append(request.getPut_policy());
}
return res.toString();
} catch (Exception e) {
return e.getMessage();
}
}
public String calculatePrivateUrlAuthorization(AuthPrivateUrlRequest request) {
try {
ParameterValidator.validator(request);
String signData = request.getMethod() + "\n" +
"\n" +
"\n" +
request.getExpires() + "\n" +
"/" + request.getBucket() +
"/" + request.getKey();
return signature(signData);
} catch (Exception e) {
return e.getMessage();
}
}
private String signature(String data) throws Exception {
byte[] hmacSha1;
hmacSha1 = Encryptors.Hmac_SHA1(UFileAuthService.privateKey, data);
if (hmacSha1 == null || hmacSha1.length == 0)
throw new Exception("Encrypt Hmac-SHA1 failed!");
return Base64.getEncoder().encodeToString(hmacSha1);
}
}

View File

@ -1,92 +0,0 @@
package com.yuxihan.ucloud.auth.service;
import com.yuxihan.ucloud.auth.bean.AuthPrivateUrlRequest;
import com.yuxihan.ucloud.auth.bean.AuthRequest;
import com.yuxihan.ucloud.auth.util.Encryptor;
import com.yuxihan.ucloud.auth.util.ParameterValidator;
import org.springframework.stereotype.Service;
import sun.security.validator.ValidatorException;
import java.util.Base64;
/**
* @description:
* @author: joshua
* @E-mail: joshua.yin@ucloud.cn
* @date: 2018-11-29 14:20
*/
@Service
public class UfileAuthService {
private static final String publicKey = "TOKEN_fba51889-6f2f-40d4-80dc-59a43a2e3b1c";
private static final String privateKey = "5cc9c018-41ef-4d34-9707-b8009ba7f837";
public String calculateAuthroization(AuthRequest request) {
try {
ParameterValidator.validator(request);
StringBuffer signData = new StringBuffer();
signData.append(request.getMethod() + "\n");
signData.append(request.getContent_md5() + "\n");
signData.append(request.getContent_type() + "\n");
signData.append(request.getDate() + "\n");
signData.append("/" + request.getBucket());
signData.append("/" + request.getKey());
if (request.getPut_policy() != null && !request.getPut_policy().isEmpty()) {
signData.append(request.getPut_policy());
}
String signature = signature(privateKey, signData.toString());
StringBuilder res = new StringBuilder("UCloud ")
.append(publicKey)
.append(":")
.append(signature);
if (request.getPut_policy() != null && !request.getPut_policy().isEmpty()) {
res.append(":").append(request.getPut_policy());
}
return res.toString();
} catch (
ValidatorException e) {
return e.getMessage();
} catch (
Exception e) {
return e.getMessage();
}
}
public String calculatePrivateUrlAuthroization(AuthPrivateUrlRequest request) {
try {
ParameterValidator.validator(request);
StringBuffer signData = new StringBuffer();
signData.append(request.getMethod() + "\n");
signData.append("\n");
signData.append("\n");
signData.append(request.getExpires() + "\n");
signData.append("/" + request.getBucket());
signData.append("/" + request.getKey());
return signature(privateKey, signData.toString());
} catch (ValidatorException e) {
return e.getMessage();
} catch (Exception e) {
return e.getMessage();
}
}
private String signature(String key, String data) throws Exception {
byte[] hmacSha1 = null;
hmacSha1 = Encryptor.Hmac_SHA1(key, data);
if (hmacSha1 == null || hmacSha1.length == 0)
throw new Exception("Encrypt Hmac-SHA1 failed!");
return Base64.getEncoder().encodeToString(hmacSha1);
}
}

View File

@ -4,17 +4,13 @@ import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @description:
* @author: joshua
* @E-mail: joshua.yin@ucloud.cn
* @date: 2018/11/8 10:57
*/
public class Encryptor {
@SuppressWarnings("unused")
public class Encryptors {
public final static String TYPE_HMAC_SHA1 = "HmacSHA1";
public final static String TYPE_SHA1 = "SHA1";
@ -24,9 +20,9 @@ public class Encryptor {
* @param key 加密秘钥
* @param data 加密内容
* @return 加密结果
* @throws InvalidKeyException
* @throws NoSuchAlgorithmException
* @throws IllegalStateException
* @throws InvalidKeyException InvalidKeyException
* @throws NoSuchAlgorithmException NoSuchAlgorithmException
* @throws IllegalStateException IllegalStateException
*/
public static byte[] Hmac_SHA1(byte[] key, byte[] data) throws NoSuchAlgorithmException, InvalidKeyException, IllegalStateException {
if (key == null || key.length == 0)
@ -35,7 +31,7 @@ public class Encryptor {
if (data == null || data.length == 0)
return null;
byte[] result = null;
byte[] result;
SecretKey secret = new SecretKeySpec(key, TYPE_HMAC_SHA1);
Mac mac = Mac.getInstance(TYPE_HMAC_SHA1);
mac.init(secret);
@ -50,10 +46,10 @@ public class Encryptor {
* @param key 加密秘钥
* @param data 加密内容
* @return 加密结果
* @throws UnsupportedEncodingException
* @throws InvalidKeyException
* @throws NoSuchAlgorithmException
* @throws IllegalStateException
* @throws UnsupportedEncodingException UnsupportedEncodingException
* @throws InvalidKeyException InvalidKeyException
* @throws NoSuchAlgorithmException NoSuchAlgorithmException
* @throws IllegalStateException IllegalStateException
*/
public static byte[] Hmac_SHA1(String key, String data) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException, IllegalStateException {
if (key == null || key.length() == 0)
@ -62,7 +58,7 @@ public class Encryptor {
if (data == null || data.length() == 0)
return null;
return Hmac_SHA1(key.getBytes("UTF-8"), data.getBytes("UTF-8"));
return Hmac_SHA1(key.getBytes(StandardCharsets.UTF_8), data.getBytes(StandardCharsets.UTF_8));
}
/**
@ -70,7 +66,7 @@ public class Encryptor {
*
* @param data 加密内容
* @return 加密结果
* @throws NoSuchAlgorithmException
* @throws NoSuchAlgorithmException NoSuchAlgorithmException
*/
public static byte[] SHA1(byte[] data) throws NoSuchAlgorithmException {
if (data == null || data.length == 0)
@ -95,11 +91,10 @@ public class Encryptor {
MessageDigest sha1 = MessageDigest.getInstance(TYPE_SHA1);
try {
byte[] buff = new byte[64 * 1024];
int len = 0;
int len;
while ((len = inputStream.read(buff)) > 0)
sha1.update(buff, 0, len);
} finally {
if (inputStream != null)
inputStream.close();
}

View File

@ -9,23 +9,17 @@ import javax.validation.ValidatorFactory;
import java.util.Iterator;
import java.util.Set;
/**
* @description:
* @author: joshua
* @E-mail: joshua.yin@ucloud.cn
* @date: 2018-11-29 15:07
*/
public class ParameterValidator {
/**
* 校验器工厂
*/
private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
public static <T> void validator(T obj) throws ValidatorException {
Validator validator = factory.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
Iterator<ConstraintViolation<T>> it = constraintViolations.iterator();
while (it.hasNext())
throw new ValidatorException(it.next().getMessage());
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
throw new ValidatorException(constraintViolation.getMessage());
}
}
}