蒙速办对接修改
This commit is contained in:
parent
4e10289a23
commit
c4dde0b62a
@ -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>
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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());
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
|
@ -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());
|
||||||
|
Loading…
Reference in New Issue
Block a user