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
提交
95bee5cd
提交
95bee5cd
编写于
2月 26, 2020
作者:
Chongwen.jiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
苹果登录接口1调试通过
上级
e4988b5e
变更
3
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
25 行增加
和
26 行删除
+25
-26
LoginController.java
...ud/account/account/server/controller/LoginController.java
+1
-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
浏览文件 @
95bee5cd
...
...
@@ -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/enums/AccountExceptionEnum.java
浏览文件 @
95bee5cd
...
...
@@ -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
浏览文件 @
95bee5cd
...
...
@@ -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
;
...
...
@@ -606,14 +598,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
());
...
...
@@ -663,13 +654,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
());
}
...
...
@@ -677,7 +669,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
;
...
...
@@ -689,10 +681,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
;
...
...
@@ -713,9 +713,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
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录