[3.4.0] add auth logic after token got

This commit is contained in:
zhongchao
2023-07-14 15:16:11 +08:00
parent 33d5ef01f6
commit c9f446c388
7 changed files with 134 additions and 16 deletions

View File

@@ -21,6 +21,8 @@ import com.mogo.commons.network.NetConfigUtils
import com.mogo.commons.utils.MogoAnalyticUtils
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_INIT
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_AUTH_FAILED
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_AUTH_OK
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_PASSPORT_TOKEN
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_CLOUD_RECONNECT
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_HTTP_DNS_ERROR_REASON
@@ -28,12 +30,12 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_SOURCE_
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_INIT_STATUS
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.startup.stageone.secret.IPassportSecret
import com.mogo.eagle.core.function.startup.stageone.secret.PassPortSecret
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAIN
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
@@ -218,7 +220,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
CallerLogger.d("$M_MAIN$TAG", "onTokenGot token : $token , sn :$sn")
CallerCloudListenerManager.invokeCloudTokenGot(token, sn)
// 异步初始化NetConfig
asyncInit()
asyncInit(sn)
startSocketService(sn)
// 开启每5s/次定位上报
uploadLocPerFiveSecond()
@@ -236,9 +238,9 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
/**
* 异步初始化
*/
private fun asyncInit() {
private fun asyncInit(sn: String) {
ThreadPoolService.execute {
//初始化网络配置
// 初始化网络配置
NetConfigUtils.init()
// 加入启动统计
val mStartParams: HashMap<String, Any> = HashMap()
@@ -247,6 +249,56 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
mStartParams["app_flavor"] = DebugConfig.getProductFlavor()
mStartParams["app_identity_mode"] = FunctionBuildConfig.appIdentityMode
MogoAnalyticUtils.track("app_start_time", mStartParams)
context?.let {
val authStatus = SharedPrefsMgr.getInstance(it).getBoolean("passportAuth", false)
if (authStatus) {
// clientConfig设置auth值并带入header
clientConfig.authPubKey = SharedPrefsMgr.getInstance(it)
.getString("passportAuthKey", "")
return@let
}
// 安全校验
try {
PassPortSecret.getInstance().init(sn, it.filesDir.path, object :
IPassportSecret {
@ChainLog(
linkChainLog = CHAIN_TYPE_INIT_STATUS,
linkCode = CHAIN_SOURCE_CLOUD,
nodeAliasCode = CHAIN_CODE_CLOUD_PASSPORT_AUTH_OK,
paramIndexes = [0]
)
override fun onSuccess(secretKey: String) {
CallerLogger.d(
"$M_MAIN$TAG",
"onSuccess secretKey:$secretKey , thread:${Thread.currentThread().name}"
)
clientConfig.authPubKey = secretKey
SharedPrefsMgr.getInstance(it).putString("passportAuthKey", secretKey)
SharedPrefsMgr.getInstance(it).putBoolean("passportAuth", true)
}
@ChainLog(
linkChainLog = CHAIN_TYPE_INIT_STATUS,
linkCode = CHAIN_SOURCE_CLOUD,
nodeAliasCode = CHAIN_CODE_CLOUD_PASSPORT_AUTH_FAILED,
paramIndexes = [0, 1]
)
override fun onFailed(errorCode: Int, errorMsg: String) {
logError(
getPrReason(
"PassPortSecret-onFailed , errorCode:$errorCode" +
",errorMsg:$errorMsg
)
)
}
})
} catch (e: Exception) {
e.printStackTrace()
}
}
}
}
@@ -320,7 +372,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
CallerLogger.e("$M_MAIN$TAG", "pr:$pr")
}
//todo 归一处理
// 归一处理
private fun getPrReason(msg: String): String {
val map = hashMapOf<String, Any>()
map["lat"] =

View File

@@ -0,0 +1,8 @@
package com.mogo.eagle.core.function.startup.stageone.secret;
public interface IPassportSecret {
void onSuccess(String secretKey);
void onFailed(int errorCode, String errorMsg);
}

View File

@@ -0,0 +1,51 @@
package com.mogo.eagle.core.function.startup.stageone.secret;
import constant.ErrorCode;
import domain.Passport;
import service.PassportService;
public class PassPortSecret {
private PassPortSecret() {
}
private static final class Holder {
private static final PassPortSecret secret = new PassPortSecret();
}
public static PassPortSecret getInstance() {
return Holder.secret;
}
private IPassportSecret secretCB;
public void init(String deviceId, String path, IPassportSecret secretCB) {
if (this.secretCB != null) {
return;
}
this.secretCB = secretCB;
PassportService passportService = new PassportService();
domain.R<Passport> r = initLow(passportService, deviceId, path);
if (r.getCode() != ErrorCode.OK.getCode()) {
secretCB.onFailed(r.getCode(), r.getMsg());
}
Passport passport = (Passport) r.getData();
domain.R<String> res = passportService.deviceActive(passport);
if (res.getCode() != ErrorCode.OK.getCode()) {
secretCB.onFailed(res.getCode(), res.getMsg());
}
String secretKey = res.getData();
secretCB.onSuccess(secretKey);
}
private static domain.R<Passport> initLow(PassportService passportService, String deviceId, String path) {
return passportService.init(Passport.builder().type(1)
.deviceActive("http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/active")
.deviceRefresh("http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/refresh")
.deviceAuth("http://gateway.ee-private-dev1.myghost.zhidaoauto.com/openapi/security/deviceCert/auth")
.productId("10019")
.productSecret("5cbcdc2240fa4104a70f28cdbe5ca69b")
.sn(deviceId)
.certPath(path).build());
}
}