蒙速办对接修改

This commit is contained in:
wans 2022-07-05 18:06:10 +08:00
parent 4e10289a23
commit c4dde0b62a
6 changed files with 264 additions and 50 deletions

View File

@ -50,12 +50,17 @@
<systemPath>${project.basedir}/lib/json-20180813.jar</systemPath> <systemPath>${project.basedir}/lib/json-20180813.jar</systemPath>
</dependency> </dependency>
<dependency> <!--<dependency>
<groupId>inspur.auth</groupId> <groupId>inspur.auth</groupId>
<artifactId>okhttp</artifactId> <artifactId>okhttp</artifactId>
<version>3.14.0</version> <version>3.14.0</version>
<scope>system</scope> <scope>system</scope>
<systemPath>${project.basedir}/lib/okhttp-3.14.0.jar</systemPath> <systemPath>${project.basedir}/lib/okhttp-3.14.0.jar</systemPath>
</dependency>-->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.14.0</version>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -12,8 +12,8 @@ import java.util.*;
public class AuthUtil { public class AuthUtil {
//private static final String BASE_URL = "https://app.zwfw.nmg.gov.cn:4443"; private static final String BASE_URL = "https://app.zwfw.nmg.gov.cn:4443";
private static final String BASE_URL = "http://10.12.23.222"; //private static final String BASE_URL = "http://10.12.23.222";
public static class AuthToken { public static class AuthToken {

View File

@ -0,0 +1,207 @@
package com.cm.common.inspurmsbh5auth.icity;
import com.alibaba.fastjson.JSON;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.util.*;
/**
* @author xwangs
* @create 2022-07-05 16:29
* @description
*/
public class CbcMsbUtil {
public static AuthToken getTokenByCode(String appId, String code, String privateKey) throws Exception {
Map<String, String> params = new HashMap<>();
params.put("app_id", appId);
params.put("code", code);
params.put("grant_type", "authorization_code");
params.put("sign", getSign(params, privateKey));
String res = OkHttp3ClientUtil.getInstance().postSync("http://10.56.65.73:8081/apimsb/", null, params);
return parseAuthTokenResult(res);
}
private static AuthToken parseAuthTokenResult(String res) throws Exception {
com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(res);
if (jsonObject.getInteger("code") == 1000) {
com.alibaba.fastjson.JSONObject data = jsonObject.getJSONObject("data");
com.alibaba.fastjson.JSONObject authTokenJson = data.getJSONObject("auth_token");
AuthToken authToken = new AuthToken();
authToken.setToken(authTokenJson.getString("auth_token"));
authToken.setRefreshToken(authTokenJson.getString("refresh_token"));
authToken.setTokenExpiredTime(new Date(authTokenJson.getLong("token_expired_time")));
authToken.setRefreshTokenExpiredTime(new Date(authTokenJson.getLong("ref_token_expired_time")));
authToken.setOpenId(authTokenJson.getString("open_id"));
return authToken;
} else {
throw new Exception("get token by code error,result is :" + res);
}
}
public static String getSign(Map<String, String> params, String privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, SignatureException {
List<String> keys = new ArrayList<>();
for (String k : params.keySet()) {
if (params.get(k) != null && params.get(k).length() > 0) {
keys.add(k);
}
}
Collections.sort(keys);
StringBuilder signBuilder = new StringBuilder();
int count = 0;
for (String k : keys) {
if (count > 0) {
signBuilder.append("&");
}
signBuilder.append(k);
signBuilder.append("=");
signBuilder.append(params.get(k));
count++;
}
return RsaSignUtil.sign(privateKey, signBuilder.toString());
}
/**
* 当使用token获取用户信息时候token存在过期的情况如果token过期
* 此时应重新授权获取使用refresh_token刷新,
* 调用者应处理token过期时的 TokenExpiredException
*/
public static UserAuthInfo getUserAuthInfo(String appId, String token, String privateKey) throws Exception {
Map<String, String> params = getRequestInfoParams(appId, token, privateKey);
String res = OkHttp3ClientUtil.getInstance().getSync("http://10.56.65.73:8081/apimsbuser/", null, params);
com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(res);
int code = jsonObject.getInteger("code");
if (code == 1000) {
com.alibaba.fastjson.JSONObject data = jsonObject.getJSONObject("data");
com.alibaba.fastjson.JSONObject authInfo = data.getJSONObject("auth_info");
UserAuthInfo userAuthInfo = new UserAuthInfo();
userAuthInfo.setIdCard(authInfo.getString("id_card"));
userAuthInfo.setRealName(authInfo.getString("real_name"));
userAuthInfo.setCheckPhone(authInfo.getString("check_phone"));
userAuthInfo.setMobilePhone(authInfo.getString("mobile_phone"));
userAuthInfo.setOpenId(authInfo.getString("open_id"));
return userAuthInfo;
} else if (code == 1008) {//token已过期
throw new TokenExpiredException("token已过期");
} else {
throw new Exception("getUserFaceAuthInfo error,result " + res);
}
}
private static Map<String, String> getRequestInfoParams(String appId, String token, String privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, SignatureException {
Map<String, String> params = new HashMap<>();
params.put("app_id", appId);
params.put("auth_token", token);
params.put("sign", getSign(params, privateKey));
return params;
}
/**
* token 内部类
*/
public static class AuthToken {
private String token;
private String refreshToken;
private Date tokenExpiredTime;
private Date refreshTokenExpiredTime;
private String openId;
public AuthToken() {
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getRefreshToken() {
return refreshToken;
}
public void setRefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
public Date getTokenExpiredTime() {
return tokenExpiredTime;
}
public void setTokenExpiredTime(Date tokenExpiredTime) {
this.tokenExpiredTime = tokenExpiredTime;
}
public Date getRefreshTokenExpiredTime() {
return refreshTokenExpiredTime;
}
public void setRefreshTokenExpiredTime(Date refreshTokenExpiredTime) {
this.refreshTokenExpiredTime = refreshTokenExpiredTime;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
}
public static class UserAuthInfo {
private String realName;
private String idCard;
private String openId;
private String checkPhone;
private String mobilePhone;
public String getMobilePhone() {
return mobilePhone;
}
public void setMobilePhone(String mobilePhone) {
this.mobilePhone = mobilePhone;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getCheckPhone() {
return checkPhone;
}
public void setCheckPhone(String checkPhone) {
this.checkPhone = checkPhone;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
}
}

View File

@ -1,8 +1,11 @@
package com.cm.common.inspurmsbh5auth.icity; package com.cm.common.inspurmsbh5auth.icity;
import ink.wgink.util.ResourceUtil;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
import java.io.*; import java.io.*;
@ -15,6 +18,11 @@ import java.io.*;
@ConfigurationProperties(prefix = "inspur-auth") @ConfigurationProperties(prefix = "inspur-auth")
public class InspurAuthConfig { public class InspurAuthConfig {
@Nullable
private Class<?> clazz;
@Nullable
private ClassLoader classLoader;
private String appId; private String appId;
private String redirectUri; private String redirectUri;
@ -37,7 +45,7 @@ public class InspurAuthConfig {
public String getPrivateKey() { public String getPrivateKey() {
String s = ""; String s = "";
try { try {
InputStream in = ResourceUtil.getJarResourceInputStream("privateKey.txt"); InputStream in = getJarResourceInputStream("privateKey.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in)); BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuffer content = new StringBuffer(); StringBuffer content = new StringBuffer();
while ((s = br.readLine())!=null){ while ((s = br.readLine())!=null){
@ -46,13 +54,46 @@ public class InspurAuthConfig {
return content.toString(); return content.toString();
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
System.out.println("1{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}"); System.out.println("1{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}");
return "";
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
System.out.println("2{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}"); System.out.println("2{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}");
return "";
} catch (IOException e) { } catch (IOException e) {
System.out.println("3{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}"); System.out.println("3{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}");
return ""; } catch (Exception e) {
System.out.println("4{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}");
} }
return "";
}
private InputStream getJarResourceInputStream(String resourcePath) throws Exception{
Assert.notNull(resourcePath, "Path must not be null");
String pathToUse = StringUtils.cleanPath(resourcePath);
if (pathToUse.startsWith("/")) {
pathToUse = pathToUse.substring(1);
}
this.classLoader = (classLoader != null ? classLoader : ClassUtils.getDefaultClassLoader());
InputStream is;
if (this.clazz != null) {
is = this.clazz.getResourceAsStream(pathToUse);
}
else if (this.classLoader != null) {
is = this.classLoader.getResourceAsStream(pathToUse);
}
else {
is = ClassLoader.getSystemResourceAsStream(pathToUse);
}
if (is == null) {
StringBuilder builder = new StringBuilder("class path resource [");
if (this.clazz != null && ! pathToUse.startsWith("/")) {
builder.append(ClassUtils.classPackageAsResourcePath(this.clazz));
builder.append('/');
}
if (pathToUse.startsWith("/")) {
pathToUse = pathToUse.substring(1);
}
builder.append(pathToUse);
builder.append(']');
throw new FileNotFoundException(builder.toString() + " cannot be opened because it does not exist");
}
return is;
} }
} }

View File

@ -1,35 +0,0 @@
package com.cm.common.inspurmsbh5auth.icity;
public class demoTest {
public static void main(String[] args) throws Exception {
String appId = "9cadc6c3-53df-407f-b83f-fe42f36a3488";
String code = "b9a8ffc0-8a50-11ec-9433-094c0f9bd754";
String privateKey = "-----BEGIN PRIVATE KEY-----\n" +
"MIICXAIBAAKBgQCs5mYn9oTlN4tKWkPSdfkhrp1IouzfggNIJvQBMkCqffc3qLAT\n" +
"Gd3Jh245hdUrDIi3L/r5H3b+MwAgNxX52ywiXdrEhk7FxtHRXTZJ8YNxmDuL8XqR\n" +
"H1DcNaDPS74Qx80EsXjSzhQQ+GCvJ8cUw2d+TbxM1KFo6I2nCJP/m+0ChQIDAQAB\n" +
"AoGAOMeI8MLCLcwp0AcIksrvP6JqQHpQs62sijtQkjwAhHzNfNfGyt8JuK7jAbzz\n" +
"nimFlDMLhlhQ6XWyKuIsM1tIiI4mZs1Nji/9mJoMylRjqKrZDI213nSY7FHq2CCf\n" +
"Ti8dVSlwLzfEM+2y2/R9MyX7tqmFxvuDfgCGSxK4z9hhEIECQQDh1/BrdnGyx68t\n" +
"bckXuZmSqGk1THGk9zyh4FAuBdXjaRVUwOKdSnE6evCrdsVUSAPtGHLeuxJDQJUK\n" +
"iV11XVLRAkEAw/yt8yji2Fqhau5xd/c4yrj9+JnK8qla7yNFPgheHpv65BbTwzgz\n" +
"pJmGuwJnVByLUyVnU6w56FxG0SbjgqPZdQJAC5lxqbNNp6cF4klvOJ65uoSX0rr4\n" +
"Y0angJDqzVJTZ/ivtciqWvXF1wEVd1kETY3dVcIZtELbb0TT4tSnTi3a4QJAdsLK\n" +
"Idv3wkUBJYwB5EFB/84j0B5Zlbw8J0cHMXTem8vHN6oBfn2zBZ4mv3HQbW6ymprC\n" +
"xzhJCt3H5/uZx9ND9QJBALt/kH8vSHEo/JLZk87SX7NQwk9OCLpaedPRIiB3dA5U\n" +
"US1pl0Ixp/acwuUfsvZ4IAcNW9FC0+Qs0xowKMJIiiY=\n" +
"-----END PRIVATE KEY-----";
AuthUtil.AuthToken token = AuthUtil.getTokenByCode(appId, code, privateKey);
//System.out.println(token);
//AuthUtil.UserAuthInfo userFaceInfo = AuthUtil.getUserAuthInfo(appId, token.getToken(), privateKey);
//System.out.println(userFaceInfo.getFaceUrl());
//System.out.println(userFaceInfo.getIdCard());
//System.out.println(userFaceInfo.getOpenId());
//System.out.println(userFaceInfo.getRealName());
//System.out.println(userFaceInfo.getMobilePhone());
//
}
}

View File

@ -1,10 +1,8 @@
package com.cm.common.inspurmsbh5auth.inspurfilter; package com.cm.common.inspurmsbh5auth.inspurfilter;
import com.cm.common.inspurmsbh5auth.icity.AuthUtil; import com.cm.common.inspurmsbh5auth.icity.CbcMsbUtil;
import com.cm.common.inspurmsbh5auth.icity.InspurAuthConfig; import com.cm.common.inspurmsbh5auth.icity.InspurAuthConfig;
import com.cm.common.inspurmsbh5auth.icity.InspurUserInfo; import com.cm.common.inspurmsbh5auth.icity.InspurUserInfo;
import ink.wgink.pojo.dtos.user.UserDTO;
import ink.wgink.util.date.DateUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
@ -14,8 +12,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author xwangs * @author xwangs
@ -52,8 +48,8 @@ public class InspurAuthFilter implements Filter {
} }
if(code != null) { if(code != null) {
try { try {
AuthUtil.AuthToken token = AuthUtil.getTokenByCodeV2(appId, code, privateKey); CbcMsbUtil.AuthToken token = CbcMsbUtil.getTokenByCode(appId, code, privateKey);
AuthUtil.UserAuthInfo userAuthInfo = AuthUtil.getUserAuthInfoV2(appId, token.getToken(), privateKey); CbcMsbUtil.UserAuthInfo userAuthInfo = CbcMsbUtil.getUserAuthInfo(appId, token.getToken(), privateKey);
InspurUserInfo inspurUser = new InspurUserInfo(); InspurUserInfo inspurUser = new InspurUserInfo();
try { try {
inspurUser.setRealName(userAuthInfo.getRealName()); inspurUser.setRealName(userAuthInfo.getRealName());