提交 07177abf 编写于 作者: fengyuan.wan's avatar fengyuan.wan

Merge remote-tracking branch 'origin/dev-login0218' into dev-login0218

流水线 #22218 已失败 于阶段
in 0 second
......@@ -26,6 +26,7 @@ public class ThreadPoolConfig {
executor.setThreadNamePrefix("account_ThreadPool");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
System.out.println("accountThreadPool init end-");
return executor;
}
}
......@@ -180,14 +180,16 @@ public class AutoCodeController extends AccountBaseController {
* @Return void
*/
private void recordRcData(HttpServletRequest req, BaseRequest request) {
logger.info("recordRcData-start");
threadPoolTaskExecutor.execute(() -> {
CheckcodeRiskReq rec = new CheckcodeRiskReq();
rec.setMobile(request.getMobile());
rec.setIp(IPUtil.getIpAdrress(req));
rec.setDeviceIp(super.getDeviceInfo("device_ip"));
rec.setDeviceId(request.getDevice_token());
logger.info("recordRcData-request-{}", JSON.toJSONString(rec));
PicaResponse resp = rcClient.logSend(rec);
logger.info("thread execute-app-authCode resp-{}", JSON.toJSONString(resp));
logger.info("recordRcData-resp-{}", JSON.toJSONString(resp));
});
}
......@@ -314,9 +316,9 @@ public class AutoCodeController extends AccountBaseController {
if (Objects.nonNull(data)) {
CheckcodeRiskResp respData = JSON.parseObject(
JSON.toJSONString(data), CheckcodeRiskResp.class);
if(StringUtils.isNotEmpty(respData.getProcessCode())){
Integer processCode = Integer.valueOf(respData.getProcessCode());
if(null != processCode){
if (StringUtils.isNotEmpty(respData.getProcessCode())) {
String processCode = respData.getProcessCode();
if (StringUtils.isNotEmpty(processCode)) {
// 请求返回正常
if (processCode.equals(RcRepTypeEnum.RC_SEND_FAIL.getCode())) {
throw new PicaWarnException(AccountExceptionEnum.PICA_RC_SEND_FAIL.getCode(),
......
......@@ -14,6 +14,7 @@ public enum AccountTypeEnum {
LOGIN_OUT(4, "退出登录"),
LOGIN_REGISTER(5, "注册登录"),
LOGIN_APPLE(6, "Apple登录"),
LOGIN_ONE_CLICK(7, "一键登录"),
//登录态相关枚举
LOGIN_STATUS_SUCCESS(1, "登录成功"),
......
......@@ -11,29 +11,29 @@ package com.pica.cloud.account.account.server.enums;
public enum RcRepTypeEnum {
// 风控禁止发送
RC_SEND_FAIL(2, "发送失败"),
RC_TRIGGER(3, "需要触发风控滑动验证"),
RC_SEND_FAIL("2", "发送失败"),
RC_TRIGGER("3", "需要触发风控滑动验证"),
// 账号、IP、设备在黑名单内,前端提示发送成功,后端不发送短信
RC_BLACKLIST(4, "发送成功"),
RC_DAY_LIMIT(5, "今日获取验证码次数已超过上限,请使用账户密码登录"),
RC_60_SECOND_LIMIT(6, "验证码发送频率过高,请{remainTime}秒后再试"),
RC_BLACKLIST("4", "发送成功"),
RC_DAY_LIMIT("5", "今日获取验证码次数已超过上限,请使用账户密码登录"),
RC_60_SECOND_LIMIT("6", "验证码发送频率过高,请{remainTime}秒后再试"),
XXX(0, "xxxxxx");
XXX("0", "xxxxxx");
private Integer code;
private String code;
private String msg;
RcRepTypeEnum(Integer code, String msg) {
RcRepTypeEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
public String getCode() {
return code;
}
public void setCode(Integer code) {
public void setCode(String code) {
this.code = code;
}
......
......@@ -4,7 +4,6 @@ package com.pica.cloud.account.account.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwk.InvalidPublicKeyException;
import com.auth0.jwk.Jwk;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.*;
......@@ -286,9 +285,7 @@ public class LoginServiceImpl implements LoginService {
@Override
@Transactional
public LoginResult loginByWeChat(BaseRequest request) {
logger.info("loginByWeChat-request:{}", JSON.toJSONString(request));
WeChatEntity weChatEntity = null;
logger.info("loginByWeChat-bizType:{}", request.getBizType());
if (null != request.getBizType() &&
request.getBizType().equals(1)) {
// h5微信登录
......@@ -297,7 +294,6 @@ public class LoginServiceImpl implements LoginService {
// 原生微信登录
weChatEntity = WeChatUtils.getAuthorizationInfo(appId, appSecret, request.getWeChatCode());
}
logger.info("loginByWeChat-weChatEntity:{}", JSON.toJSONString(weChatEntity));
if (weChatEntity == null || StringUtils.isEmpty(weChatEntity.getOpenid()) || StringUtils.isEmpty(weChatEntity.getAccess_token())) {
throw new PicaException(AccountExceptionEnum.PICA_WECHAT_CODE_ERROR.getCode(), AccountExceptionEnum.PICA_WECHAT_CODE_ERROR.getMessage());
}
......@@ -306,11 +302,9 @@ public class LoginServiceImpl implements LoginService {
map.put("access_token", weChatEntity.getAccess_token());
map.put("openid", weChatEntity.getOpenid());
Map weChatUserInfo = WeChatUtils.getWeChatUserInfo(map, weChatURL);
logger.info("loginByWeChat-weChatUserInfo:{}", JSON.toJSONString(weChatUserInfo));
WeChatUserInfoEntity weChatUserInfoEntity = WeChatUtils.mergeWechatUserInfo(weChatUserInfo, weChatEntity.getOpenid());
String unionId = weChatUserInfoEntity.getUnionid();
AccountUnionEntity accountUnionEntity = accountUnionMapper.selectByUnionId(unionId);
logger.info("loginByWeChat-accountUnionEntity:{}", JSON.toJSONString(accountUnionEntity));
//是否绑定逻辑的判断
if (accountUnionEntity != null) {
Long acctId = accountUnionEntity.getAcctId();
......@@ -322,9 +316,7 @@ public class LoginServiceImpl implements LoginService {
//account.setMobilePhone(request.getMobile());
account.setMobilePhone("");
account.setRegisterSource(request.getSourceType());
logger.info("loginByWeChat-newToken...start");
String newToken = tokenUtils.generateToken(account);
logger.info("loginByWeChat-newToken...end");
LoginResult result = new LoginResult();
result.setToken(newToken);
result.setUserId(userId);
......@@ -338,7 +330,6 @@ public class LoginServiceImpl implements LoginService {
return result;
} else {
AccountWeChatInfoEntity entity = accountWeChatInfoMapper.selectByUnionId(unionId);
logger.info("loginByWeChat-数据是否存在...entity:{}", (entity == null));
//如果微信信息表数据不存在,就把用户信息存储到微信信息表中。
if (entity == null) {
processWeChatInfoUser(weChatUserInfoEntity, request.getWeChatLoginType());
......@@ -504,7 +495,7 @@ public class LoginServiceImpl implements LoginService {
result = registerService.register(baseRequest, queryMobileEntity);
} else {
//登录功能
result = processLogin(baseRequest, accountInfoEntity.getId(), AccountTypeEnum.LOGIN_CODE.getCode(), queryMobileEntity);
result = processLogin(baseRequest, accountInfoEntity.getId(), AccountTypeEnum.LOGIN_ONE_CLICK.getCode(), queryMobileEntity);
}
return result;
}
......@@ -686,7 +677,7 @@ public class LoginServiceImpl implements LoginService {
String sub;
try {
String claim = new String(Base64.decodeBase64(identifyToken.split("\\.")[1]));
logger.info("checkIdentifyToken-claim:{}", claim);
//logger.info("checkIdentifyToken-claim:{}", claim);
aud = JSONObject.parseObject(claim).get("aud").toString();
sub = JSONObject.parseObject(claim).get("sub").toString();
// appleUserId从token中解码取出后赋值
......@@ -696,69 +687,8 @@ public class LoginServiceImpl implements LoginService {
throw new PicaException("checkIdentifyToken-token decode fail Exception", "token decode fail");
}
return this.verify(publicKey, identifyToken, aud, sub, request);
// return false;
}
public static void main(String[] args) throws InvalidPublicKeyException {
String jwt = "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ." +
"eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLnl1bnF1ZXlpLkRvY3RvciIsImV4cCI6MTU4Mjc4MjE2NSwiaWF0IjoxNTgyNzgxNTY1LCJzdWIiOiIwMDExMzAuMmI4NzE0NjVmZDFmNDVmZmFmNWRjMjg3ZTQ4OWVlZjEuMDMxNSIsImNfaGFzaCI6Ing1b3lsbXRCdG9XRy02eFVzakRNRUEiLCJlbWFpbCI6IjdnZ2E1cmo1dGNAcHJpdmF0ZXJlbGF5LmFwcGxlaWQuY29tIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwiaXNfcHJpdmF0ZV9lbWFpbCI6InRydWUiLCJhdXRoX3RpbWUiOjE1ODI3ODE1NjUsIm5vbmNlX3N1cHBvcnRlZCI6dHJ1ZX0.QKybdVM-1cQBNYeVzYvoQY8rc2ZdRAeq8dJQqbd0zagkmz8X9eoVoKvLxI-cO09bbpRAGMv7Bz-bVcIDgUjIxhxudInmhU2vltfYGEt5meKHjsgKg_qdjyK_WC_bG3N-LhfHUhiA1n3rU0owSxVOWdBxmnYZhftjMd2kGphY-leVPYMoUJRKPteJAMx-F8er1L9nBkrfazoE61Y5GR_y8qtdVFIqlo9oPEGlb1qUC7A4kSGp5OVb4vRvWiqQj7MTjsYIGfqUWQmnkoA7dvlCpbiHdel3Lq6UexS4XzC_FBYC7ekBFU1EO-5rFUflhzmxepPnD8S51eS1CO0ProwwOA";
// jwt= "eyJraWQiOiI4NkQ4OEtmIiwiYWxnIjoiUlMyNTYifQ." +
// "eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLnl1bnF1ZXlpLkRvY3RvciIsImV4cCI6MTU4Mjc4MDgzMiwiaWF0IjoxNTgyNzgwMjMyLCJzdWIiOiIwMDExMzAuMmI4NzE0NjVmZDFmNDVmZmFmNWRjMjg3ZTQ4OWVlZjEuMDMxNSIsImNfaGFzaCI6Ilg0TzJGQnBQNlJHSm5yTTJaX2toYXciLCJlbWFpbCI6IjdnZ2E1cmo1dGNAcHJpdmF0ZXJlbGF5LmFwcGxlaWQuY29tIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwiaXNfcHJpdmF0ZV9lbWFpbCI6InRydWUiLCJhdXRoX3RpbWUiOjE1ODI3ODAyMzIsIm5vbmNlX3N1cHBvcnRlZCI6dHJ1ZX0." +
// "fB6Av1KK38U65HbP5XDfNjWyl2i9C9ojHSxAytDKjXHTCaXB2VMHmmnGzEaoSMnS0WR7LilugrmznqOIXkV8i-SyATw-Wx6hWg_9aiBOj-1eeQhUrqZGsWhjklxCFfK0WpAiyNNSAwiklgiZY41P0jrHzNbxk_5WVIxb0sEQ-igLYQhonTeLQ8WuYuCB6iRMlWHxwNdpSNXb-IlzjEKNm1cozf8RRjg0Y00Hu2VPEai2NJzGx5Ro7x7OpvCfePjxlyJze0tSYDVWxBnklBvHGDHXuTqKqMwNNHzo53JIiSARQD7JHxNCgtNTVIYX075zHNn8UgiLZy1mEdf1KnoXHg";
jwt = "eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ." +
"eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLnl1bnF1ZXlpLkRvY3RvciIsImV4cCI6MTU4Mjg3MTkwNSwiaWF0IjoxNTgyODcxMzA1LCJzdWIiOiIwMDExMzAuMmI4NzE0NjVmZDFmNDVmZmFmNWRjMjg3ZTQ4OWVlZjEuMDMxNSIsImNfaGFzaCI6IkliX3VSOWdnZEdVRi1jbzZWZGdfTHciLCJlbWFpbCI6IjdnZ2E1cmo1dGNAcHJpdmF0ZXJlbGF5LmFwcGxlaWQuY29tIiwiZW1haWxfdmVyaWZpZWQiOiJ0cnVlIiwiaXNfcHJpdmF0ZV9lbWFpbCI6InRydWUiLCJhdXRoX3RpbWUiOjE1ODI4NzEzMDUsIm5vbmNlX3N1cHBvcnRlZCI6dHJ1ZX0."+
"Mek6XzKKUenVQU3IHmLM_tgtilCbsIUSFu1r2gIHsNqseVZYC6JpkQJEZ2SSIwjRPSNUqtK6wqG4s5QbY9qJfIVdVMPqI95eaJiPWKOM6RTlatEhyLs4mokgSutsFHF97nW1qXGidN4tfXaxYygfaoYvOvjeGM-sfUixUbu3fhc5PKH2N91LnVcJNDmqDiUamzOYIXDzn55us8bjCm02fHOQ9D12HY9ambZ_zmPJXAMRi_YoqnSGAhggLfqKJ32pcB2ATHumgDOEhRsuXM89M6pHRS-yzaTfV182prd-fYWdscPVMiEqDt8JXb811lzY8wfqYZxtyg1sEdkq0Hrugw";
// 向苹果后台获取公钥参数
String appleResp = null;
try {
appleResp = HttpClientCloudUtils.getHttpExecute(Constants.APPLE_GET_PUBLIC_KEY_URL);
} catch (Exception e) {
System.out.println("checkIdentifyToken-get apple public key fail");
throw new PicaException("get apple public key fail Exception", e.getMessage());
}
JSONObject jsonObject = JSONObject.parseObject(appleResp);
String keys = jsonObject.getString("keys");
JSONArray arr = JSONObject.parseArray(keys);
// JSONObject jsonObject1 = JSONObject.parseObject(arr.getString(0));
JSONObject jsonObject1 = JSONObject.parseObject(arr.getString(1));
System.out.println("jsonObject1:"+jsonObject1);
Jwk jwa = Jwk.fromValues(jsonObject1);
PublicKey publicKey = jwa.getPublicKey();
//added by joy begin
// publicKey = getPublicKey();
//added by joy end
String audience= "com.yunqueyi.Doctor";
String subject= "001130.2b871465fd1f45ffaf5dc287e489eef1.0315";
JwtParser jwtParser = Jwts.parser().setSigningKey(publicKey);
jwtParser.requireIssuer(Constants.APPLE_ISSUE_URL);
jwtParser.requireAudience(audience);
jwtParser.requireSubject(subject);
try {
System.out.println("checkIdentifyToken-apple-verify-starting");
Jws<Claims> claim = jwtParser.parseClaimsJws(jwt);
System.out.println("checkIdentifyToken-apple-verify-claim:"+ JSON.toJSONString(claim));
if (claim != null && claim.getBody().containsKey("auth_time")) {
JSONObject claimBody = JSONObject.parseObject(JSON.toJSONString(claim.getBody()), JSONObject.class);
System.out.println("success......");
}
} catch (ExpiredJwtException e) {
System.out.println("checkIdentifyToken-apple token expired" + e.getMessage());
throw new PicaException("apple token expired Exception {}", e.getMessage());
} catch (Exception e) {
System.out.println("checkIdentifyToken-apple token illegal" + e.getMessage());
throw new PicaException("apple token illegal Exception", e.getMessage());
}
}
/**
* @Description 验证苹果公钥
* @Author Chongwen.jiang
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册