深信服移动端零信任SDK解决方案基于深信服在数据传输方面强大的安全能力与移动端安全扎实的技术积累,为移动端APP提供安全接入能力和双域隔离安全沙箱的能力,移动端APP通过集成轻量级SDK,即可实现APP双域隔离保护,对APP内数据进行加密和隔离,让移动APP安全接入内网业务系统,帮助用户在任何时间、任何地点,使用移动终端,安全、快速地开展移动办公业务。 详情参考 产品概述
监听退出登录事件
addLogoutListener(callback(ret))
ret:
{
type:, //数字类型;退出登录类型;取值范围:
0:用户注销
1:免密失败
2:服务端shutdown
3:授权失败
100:其他注销
msg:{
errCode:, //数字类型;错误码
errStr:, //字符串类型;错误信息
serverInfo:, //字符串类型;服务端透传字符串
displayName:, //字符串类型;展示的用户名
nextServiceList:[{ //数组类型;辅助认证多选一列表
authId:, //字符串类型;
authType:, //字符串类型;
iconType:, //字符串类型;
iconPath:, //字符串类型;
authName:, //字符串类型;
desc:, //字符串类型;
subType:, //字符串类型;
}]
}
}
var mtlVPN = api.require('mtlVPN');
mtlVPN.addLogoutListener({function(ret, err) {
api.alert({msg: JSON.stringify(ret)});
});
Android、iOS系统
可提供的1.0.0及更高版本
退出登陆
logout()
var mtlVPN = api.require('mtlVPN');
mtlVPN.logout();
Android、iOS系统
可提供的1.0.0及更高版本
sdk提供了免密认证的能力,即认证流程全部成功后,重启应用或者服务端超时注销用户后,应用不需要再次使用用户名密码进行认证,可以直接调用免密认证接口进行认证上线。
注意:
1.免密认证接口只需要在应用进程启动后调用一次,不用多次调用
2.免密认证不能完全取代主认证,因为用户主动注销或者管理员在控制台主动让用户下线等场景下,免密信息会失效,免密认证就会失败,所以应用需要在免密认证失败后,继续使用用户名密码进行认证,可以参考MainApp中的处理方式
3.免密接口返回true, 仅表示当前本地状态是支持免密状态, 真正发送免密网络请求是在接口返回之后进行的; 但应用不必担心存在时序问题, 只要免密接口返回true, 就表示可以发起资源访问了, 在内部免密请求未真正成功前, 内部会缓存应用层的资源网络请求, 等内部免密成功后会立刻代理之前缓存的请求, 如果由于网络问题导致免密失败了, 内部会不断重试直到成功(重试间隔为3s一次), 应用不必关注内部免密机制, 只要网络恢复, 内部自然能免密成功并在成功后代理已缓存和新发起的资源请求.
4.因为免密接口返回true, 不表示内部已经真正免密成功, 所以存在一种场景: 在应用进程退出期间, 用户被注销了, 此时重新打开应用, 调用免密会返回true, 但内部真正发送免密请求时, 由于用户已经注销, 此时应用会收到注销回调. 这种场景是正常的, 只要确保在调用免密前已经注册注销回调监听, 收到注销后, 就按正常注销处理逻辑,引导用户重新登录
startAutoTicket(callback(ret))
ret:
{
status:'' //布尔类型;是否免密登录成功
}
var mtlVPN = api.require('mtlVPN');
mtlVPN.startAutoTicket(function(ret, err) {
api.alert({msg: JSON.stringify(ret)});
});
Android、iOS系统
可提供的1.0.0及更高版本
开始用户名密码认证,认证结果会在认证回调返回
startPasswordAuth({params},callback(ret))
vpnUrl:
username:
password:
ret:
{
eventType:, //字符串类型;交互事件类型;取值范围:
//onAuthFailed:失败
//onAuthSuccess:成功
//onAuthProcess:二次认证
message:{
errCode:, //数字类型;错误码
errStr:, //字符串类型;错误信息
serverInfo:, //字符串类型;服务端透传字符串
displayName:, //字符串类型;展示的用户名
nextServiceList:[{ //数组类型;辅助认证多选一列表
authId:, //字符串类型;
authType:, //字符串类型;
iconType:, //字符串类型;
iconPath:, //字符串类型;
authName:, //字符串类型;
desc:, //字符串类型;
subType:, //字符串类型;
}]
}
}
var mtlVPN = api.require('mtlVPN');
mtlVPN.startPasswordAuth({
vpnUrl:,
username:,
password:
}, function(ret, err) {
api.alert({msg: JSON.stringify(ret)});
});
Android、iOS系统
可提供的1.0.0及更高版本
设置SPA种子,设置后再调用密码登录
setSPAConfig({params},callback(ret))
spaConfig:
获取SPA种子
开启服务隐身(SPA)后,接入地址需要通过SPA种子来获取,SPA种子当前分两种类型:一种是“共享模式”,即所有用户共用一个SPA种子,另一种是一人一码,即每一个用户拥有不同的SPA种子,具体使用哪种类型取决于服务端的配置, 详情参考常见咨询问题。
清除SPA种子
需要清除SPA种子也可以调用setSpaConfig接口将本地保存的SPA种子清除,共享码和一人一码两种场景都适用,具体操作如下: 此场景需要将服务端获取到服务端地址,按照如下格式拼接成json数据,再调用setSpaConfig接口将处理后的json数据传递给sdk,需要设置spaSecret的值为空(底层保存的逻辑是按照服务器地址保存的种子,所以需要地址作为key来删除种子).注意:以下数据仅为示例,实际需要使用对应的服务端地址:{"loginAddress":"https://10.242.4.232", "spaSecret":""}
ret:
{
status:, //布尔类型;是否成功
}
var mtlVPN = api.require('mtlVPN');
mtlVPN.setSPAConfig({
spaConfig:
}, function(ret, err) {
api.alert({msg: JSON.stringify(ret)});
});
Android、iOS系统
可提供的1.0.0及更高版本
判断某个URL的SPA种子是否存在
isSpaSeedExist({params},callback(ret))
url:
ret:
{
exist:, //布尔类型;是否存在
}
var mtlVPN = api.require('mtlVPN');
mtlVPN.isSpaSeedExist({
url:
}, function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
Android、iOS系统
可提供的1.0.0及更高版本