Commit c3fb9d0f by huangjy

fix:对接第三方平台区分不同平台

parent 445b5c8a
package com.makeit.api.external.filter; package com.makeit.api.external.filter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.api.external.util.RSAUtils; import com.makeit.api.external.util.RSAUtils;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.service.SysApiSecretService;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.*; import javax.servlet.*;
import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebFilter;
...@@ -18,7 +22,8 @@ public class SignAuthFilter implements Filter { ...@@ -18,7 +22,8 @@ public class SignAuthFilter implements Filter {
private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class); private static Logger logger = LoggerFactory.getLogger(SignAuthFilter.class);
@Autowired
private SysApiSecretService sysApiSecretService;
@Override @Override
public void init(FilterConfig filterConfig) { public void init(FilterConfig filterConfig) {
...@@ -30,22 +35,30 @@ public class SignAuthFilter implements Filter { ...@@ -30,22 +35,30 @@ public class SignAuthFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res; HttpServletResponse response = (HttpServletResponse) res;
try { try {
String platform = request.getHeader("platform");
if (StringUtils.isEmpty(platform)) {
response.sendError(500, "未指定platform");
return;
}
String sign = request.getHeader("token"); String sign = request.getHeader("token");
if (StringUtils.isEmpty(sign)) { if (StringUtils.isEmpty(sign)) {
response.sendError(403, "Forbidden"); response.sendError(403, "token为空");
return; return;
} }
logger.info("getted Authorization is ---> " + sign); logger.info("getted Authorization is ---> " + sign);
// 获取客户端ip SysApiSecret sysApiSecret = sysApiSecretService.getOne(new QueryWrapper<SysApiSecret>()
/* String ip = IpUtil.getIpAddr(request); .lambda().eq(SysApiSecret::getPlatform,platform));
logger.info("getted ip is ---> " + ip);*/ if (sysApiSecret == null) {
response.sendError(500, "请配置接入方密钥信息");
return;
}
MyRequestWrapper requestWrapper = new MyRequestWrapper(request); MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8); String bodyString = new String(requestWrapper.getBody(), StandardCharsets.UTF_8);
logger.info("getted requestbody data is ---> " + bodyString); logger.info("getted requestbody data is ---> " + bodyString);
String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(RSAUtils.PRIVATE_KEY), "UTF-8"); String decryptJson = RSAUtils.privateDecrypt(sign, RSAUtils.getPrivateKey(sysApiSecret.getPrivateKey()), "UTF-8");
boolean couldPass = decryptJson.replaceAll("\n","").replaceAll(" ","").trim() boolean couldPass = decryptJson.replaceAll("\n","").replaceAll(" ","").trim()
.equals(bodyString.replaceAll(" ","").trim()); .equals(bodyString.replaceAll(" ","").trim());
......
...@@ -35,15 +35,16 @@ public class RSAUtils { ...@@ -35,15 +35,16 @@ public class RSAUtils {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
Map<String, String> keys = createKeys(2048); Map<String, String> keys = createKeys(2048);
System.out.println(keys); System.out.println("privateKey:" + keys.get("privateKey"));
System.out.println("publicKey:" + keys.get("publicKey"));
RSAPublicKey publicKey = getPublicKey(keys.get("publicKey")); RSAPublicKey publicKey = getPublicKey(PUBLIC_KEY);
String encrypt = publicEncrypt("{\"page\":1,\"limit\":10,\"data\":{}}", publicKey, "UTF-8"); String encrypt = publicEncrypt("{\"page\":1,\"limit\":10,\"data\":{}}", publicKey, "UTF-8");
System.out.println(encrypt); System.out.println(encrypt);
RSAPrivateKey privateKey = getPrivateKey(keys.get("privateKey")); RSAPrivateKey privateKey = getPrivateKey(PRIVATE_KEY);
String decrypt = privateDecrypt(encrypt, privateKey, "UTF-8"); String decrypt = privateDecrypt(encrypt, privateKey, "UTF-8");
System.out.println(decrypt); System.out.println(decrypt);
......
package com.makeit.module.system.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import com.makeit.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 第三方平台api
*
* @author lzy
* @email
* @date 2021-08-15 08:24:09
*/
@Data
@ApiModel("第三方平台api")
@TableName(value = "sys_api_secret")
public class SysApiSecret extends BaseEntity {
@ApiModelProperty("平台")
private String platform;
@ApiModelProperty("公钥")
private String publicKey;
@ApiModelProperty("私钥")
private String privateKey;
@ApiModelProperty("机构id")
private String orgId;
@ApiModelProperty("描述")
private String description;
}
package com.makeit.module.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.system.entity.Country;
import com.makeit.module.system.entity.SysApiSecret;
/**
* <p>
* 第三方api Mapper 接口
* </p>
*
* @author ywc
* @since 2021-06-09
*/
public interface SysApiSecretMapper extends BaseMapper<SysApiSecret> {
}
package com.makeit.module.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.system.entity.SysApiSecret;
public interface SysApiSecretService extends IService<SysApiSecret> {
}
package com.makeit.module.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.system.entity.SysApiSecret;
import com.makeit.module.system.mapper.SysApiSecretMapper;
import com.makeit.module.system.service.SysApiSecretService;
import org.springframework.stereotype.Service;
@Service
public class SysApiSecretServiceImpl extends ServiceImpl<SysApiSecretMapper, SysApiSecret> implements SysApiSecretService {
}
...@@ -149,6 +149,7 @@ tenant: ...@@ -149,6 +149,7 @@ tenant:
- plat_menu - plat_menu
- plat_day_duration_record - plat_day_duration_record
- plat_elder_children_info - plat_elder_children_info
- sys_api_secret
rsa: rsa:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment