mirror of
https://e.coding.net/mcontext/mContext/sdu_server.git
synced 2024-09-18 02:24:54 +08:00
解决报警告
This commit is contained in:
parent
0dde7ca167
commit
e5f0f28bf3
@ -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() {
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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,12 +91,11 @@ 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();
|
||||
inputStream.close();
|
||||
}
|
||||
|
||||
return sha1.digest();
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user