蒙速办对接修改
This commit is contained in:
parent
4e10289a23
commit
c4dde0b62a
@ -50,12 +50,17 @@
|
||||
<systemPath>${project.basedir}/lib/json-20180813.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>inspur.auth</groupId>
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>3.14.0</version>
|
||||
<scope>system</scope>
|
||||
<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>
|
||||
|
@ -12,8 +12,8 @@ import java.util.*;
|
||||
|
||||
public class AuthUtil {
|
||||
|
||||
//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 = "https://app.zwfw.nmg.gov.cn:4443";
|
||||
//private static final String BASE_URL = "http://10.12.23.222";
|
||||
|
||||
|
||||
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;
|
||||
|
||||
import ink.wgink.util.ResourceUtil;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
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.*;
|
||||
|
||||
@ -15,6 +18,11 @@ import java.io.*;
|
||||
@ConfigurationProperties(prefix = "inspur-auth")
|
||||
public class InspurAuthConfig {
|
||||
|
||||
@Nullable
|
||||
private Class<?> clazz;
|
||||
@Nullable
|
||||
private ClassLoader classLoader;
|
||||
|
||||
private String appId;
|
||||
private String redirectUri;
|
||||
|
||||
@ -37,7 +45,7 @@ public class InspurAuthConfig {
|
||||
public String getPrivateKey() {
|
||||
String s = "";
|
||||
try {
|
||||
InputStream in = ResourceUtil.getJarResourceInputStream("privateKey.txt");
|
||||
InputStream in = getJarResourceInputStream("privateKey.txt");
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(in));
|
||||
StringBuffer content = new StringBuffer();
|
||||
while ((s = br.readLine())!=null){
|
||||
@ -46,13 +54,46 @@ public class InspurAuthConfig {
|
||||
return content.toString();
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
System.out.println("1{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}");
|
||||
return "";
|
||||
} catch (FileNotFoundException e) {
|
||||
System.out.println("2{{{{{{{{{{{{{{{ERROR: privateKey.txt 文件为找到!}}}}}}}}}}}}}}}}}");
|
||||
return "";
|
||||
} catch (IOException e) {
|
||||
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;
|
||||
|
||||
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.InspurUserInfo;
|
||||
import ink.wgink.pojo.dtos.user.UserDTO;
|
||||
import ink.wgink.util.date.DateUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
|
||||
@ -14,8 +12,6 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author xwangs
|
||||
@ -52,8 +48,8 @@ public class InspurAuthFilter implements Filter {
|
||||
}
|
||||
if(code != null) {
|
||||
try {
|
||||
AuthUtil.AuthToken token = AuthUtil.getTokenByCodeV2(appId, code, privateKey);
|
||||
AuthUtil.UserAuthInfo userAuthInfo = AuthUtil.getUserAuthInfoV2(appId, token.getToken(), privateKey);
|
||||
CbcMsbUtil.AuthToken token = CbcMsbUtil.getTokenByCode(appId, code, privateKey);
|
||||
CbcMsbUtil.UserAuthInfo userAuthInfo = CbcMsbUtil.getUserAuthInfo(appId, token.getToken(), privateKey);
|
||||
InspurUserInfo inspurUser = new InspurUserInfo();
|
||||
try {
|
||||
inspurUser.setRealName(userAuthInfo.getRealName());
|
||||
|
Loading…
Reference in New Issue
Block a user