Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-cloud-account
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.account
pica-cloud-account
提交
8cba6c15
提交
8cba6c15
编写于
2月 26, 2020
作者:
fengyuan.wan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/dev-login0218' into dev-login0218
上级
06663e79
f90e7c45
流水线
#22079
已失败 于阶段
in 0 second
变更
4
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
27 行增加
和
27 行删除
+27
-27
LoginController.java
...ud/account/account/server/controller/LoginController.java
+1
-1
ProtocolController.java
...account/account/server/controller/ProtocolController.java
+2
-1
AccountExceptionEnum.java
...ud/account/account/server/enums/AccountExceptionEnum.java
+1
-1
LoginServiceImpl.java
...account/account/server/service/impl/LoginServiceImpl.java
+23
-24
未找到文件。
server/src/main/java/com/pica/cloud/account/account/server/controller/LoginController.java
浏览文件 @
8cba6c15
...
...
@@ -217,7 +217,7 @@ public class LoginController extends AccountBaseController {
}
@ApiOperation
(
value
=
"苹果授权登录"
)
@
Ge
tMapping
(
"/login/apple"
)
@
Pos
tMapping
(
"/login/apple"
)
public
PicaResponse
appleAuth
(
@RequestBody
EncryptEntity
entity
)
throws
Exception
{
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
request
.
setProductType
(
super
.
getProductType
());
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/ProtocolController.java
浏览文件 @
8cba6c15
...
...
@@ -35,7 +35,8 @@ public class ProtocolController extends AccountBaseController {
@ApiOperation
(
value
=
"首次唤起App签订协议"
)
@PostMapping
(
"/firstCallApp"
)
public
PicaResponse
firstCallApp
(
@RequestBody
BatchSignReq
req
){
String
appVersion
=
super
.
getDeviceInfo
(
"appVersion"
);
String
appVersion
=
super
.
getDeviceInfo
(
"app_version"
);
req
.
setUserId
(
Integer
.
parseInt
(
String
.
valueOf
(
super
.
getDoctorIdByToken
())));
protocolService
.
firstCallAppSignProtocol
(
req
,
appVersion
);
return
PicaResponse
.
toResponse
();
}
...
...
server/src/main/java/com/pica/cloud/account/account/server/enums/AccountExceptionEnum.java
浏览文件 @
8cba6c15
...
...
@@ -33,7 +33,7 @@ public enum AccountExceptionEnum {
PICA_PASSWORD_RULE_ERROR
(
"216525"
,
"该手机号{mobile}尚未设置密码,请先设置密码。"
),
PICA_PWD_MISMATCH_4
(
"216526"
,
"密码错误,请重试"
),
PICA_PWD_MISMATCH_5
(
"216527"
,
"该账号{mobile}的密码错误次数已达上限请24小时后再试,或请使用其他登录方式或找回密码"
),
PICA_APPLE_TOKEN_ERROR
(
"216528"
,
"
微信登录授权identifyT
oken不正确"
),
PICA_APPLE_TOKEN_ERROR
(
"216528"
,
"
Apple登录授权t
oken不正确"
),
PICA_APPLE_BIND_OTHER
(
"216529"
,
"该Apple账号已绑定其他账户"
),
PICA_MOBILE_BIND_OTHER
(
"216530"
,
"该手机号已绑定其他Apple账号"
),
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/LoginServiceImpl.java
浏览文件 @
8cba6c15
...
...
@@ -24,14 +24,13 @@ import com.pica.cloud.account.account.server.util.AESUtil;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.account.account.server.util.TokenUtils
;
import
com.pica.cloud.account.account.server.util.WeChatUtils
;
import
com.pica.cloud.account.account.server.vo.OneClickLoginResultVo
;
import
com.pica.cloud.foundation.encryption.common.constants.EncryptConstants
;
import
com.pica.cloud.foundation.encryption.util.EncryptUtils
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.utils.utils.HttpClientUtil
;
import
com.pica.cloud.foundation.utils.utils.ValidateUtils
;
import
com.pica.cloud.patient.smartcontract.common.utils.HttpClientCloudUtils
;
import
io.jsonwebtoken.*
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -42,13 +41,6 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.BufferedReader
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.security.PublicKey
;
import
java.util.Date
;
import
java.util.HashMap
;
...
...
@@ -605,14 +597,13 @@ public class LoginServiceImpl implements LoginService {
@Override
public
LoginResult
loginByApple
(
BaseRequest
request
)
{
// 入参非空判断
if
(
StringUtils
.
isEmpty
(
request
.
getIdentifyToken
())
||
StringUtils
.
isEmpty
(
request
.
getAppleUserId
())
||
StringUtils
.
isEmpty
(
request
.
getAppleId
()))
{
if
(
StringUtils
.
isEmpty
(
request
.
getIdentifyToken
()))
{
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PARAMS_ERROR
.
getCode
(),
AccountExceptionEnum
.
PICA_PARAMS_ERROR
.
getMessage
());
}
// identifyToken校验
if
(!
checkIdentifyToken
(
request
.
getIdentifyToken
())){
if
(!
checkIdentifyToken
(
request
)){
logger
.
info
(
JSON
.
toJSONString
(
request
));
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_APPLE_TOKEN_ERROR
.
getCode
(),
AccountExceptionEnum
.
PICA_APPLE_TOKEN_ERROR
.
getMessage
());
...
...
@@ -662,13 +653,14 @@ public class LoginServiceImpl implements LoginService {
* @Params [identifyToekn]
* @Return boolean false:未通过token校验,true:通过校验
*/
private
boolean
checkIdentifyToken
(
String
identifyToken
)
{
private
boolean
checkIdentifyToken
(
BaseRequest
request
)
{
String
identifyToken
=
request
.
getIdentifyToken
();
logger
.
info
(
"checkIdentifyToken-identifyToken:{}"
,
identifyToken
);
// 向苹果后台获取公钥参数
String
appleResp
=
null
;
try
{
appleResp
=
HttpClient
Util
.
getHttpExecute
(
"https://appleid.apple.com/auth/keys"
);
logger
.
info
(
"checkIdentifyToken-appleResp:{}"
,
appleResp
);
appleResp
=
HttpClient
CloudUtils
.
getHttpExecute
(
"https://appleid.apple.com/auth/keys"
);
//
logger.info("checkIdentifyToken-appleResp:{}", appleResp);
}
catch
(
Exception
e
)
{
throw
new
PicaException
(
"获取公钥失败"
,
e
.
getMessage
());
}
...
...
@@ -676,7 +668,7 @@ public class LoginServiceImpl implements LoginService {
String
keys
=
jsonObject
.
getString
(
"keys"
);
JSONArray
arr
=
JSONObject
.
parseArray
(
keys
);
JSONObject
jsonObject1
=
JSONObject
.
parseObject
(
arr
.
getString
(
0
));
logger
.
info
(
"checkIdentifyToken-jsonObject1:{}"
,
jsonObject1
);
//
logger.info("checkIdentifyToken-jsonObject1:{}", jsonObject1);
// 通过架包生成publicKey
PublicKey
publicKey
;
...
...
@@ -688,10 +680,18 @@ public class LoginServiceImpl implements LoginService {
}
// 分割前台传过来的identifyToken(jwt格式的token)用base64解码使用
if
(
identifyToken
.
split
(
"\\."
).
length
>
1
)
{
String
claim
=
new
String
(
Base64
.
decodeBase64
(
identifyToken
.
split
(
"\\."
)[
1
]));
logger
.
info
(
"checkIdentifyToken-claim:{}"
,
claim
);
String
aud
=
JSONObject
.
parseObject
(
claim
).
get
(
"aud"
).
toString
();
String
sub
=
JSONObject
.
parseObject
(
claim
).
get
(
"sub"
).
toString
();
String
aud
;
String
sub
;
try
{
String
claim
=
new
String
(
Base64
.
decodeBase64
(
identifyToken
.
split
(
"\\."
)[
1
]));
//logger.info("checkIdentifyToken-claim:{}", claim);
aud
=
JSONObject
.
parseObject
(
claim
).
get
(
"aud"
).
toString
();
sub
=
JSONObject
.
parseObject
(
claim
).
get
(
"sub"
).
toString
();
// appleUserId从token中解码取出后赋值
request
.
setAppleUserId
(
sub
);
}
catch
(
Exception
e
)
{
throw
new
PicaException
(
"token格式错误"
,
e
.
getMessage
());
}
return
this
.
verify
(
publicKey
,
identifyToken
,
aud
,
sub
);
}
return
false
;
...
...
@@ -712,9 +712,8 @@ public class LoginServiceImpl implements LoginService {
jwtParser
.
requireSubject
(
subject
);
try
{
Jws
<
Claims
>
claim
=
jwtParser
.
parseClaimsJws
(
jwt
);
logger
.
info
(
"apple-verify-claim:{}"
,
JSON
.
toJSONString
(
claim
));
logger
.
info
(
"apple-verify-claim.getBody:{}"
,
JSON
.
toJSONString
(
claim
.
getBody
()));
//logger.info("apple-verify-claim:{}", JSON.toJSONString(claim));
//logger.info("apple-verify-claim.getBody:{}", JSON.toJSONString(claim.getBody()));
if
(
claim
!=
null
&&
claim
.
getBody
().
containsKey
(
"auth_time"
))
{
return
true
;
}
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录