更新记录
1.0.0(2025-05-09)
新版发布。
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 4.22,Android:不确定,iOS:不确定,HarmonyNext:支持 |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
深信服移动端零信任SDK插件接口使用说明
深信服移动端零信任SDK,用户名密码认证,用户名密码+短信认证,启用SPA,短信主认证。
1. 获取插件对象
import * as Sangfor from "@/uni_modules/Lizii-SangforHar";
<script>
//插件对象
import * as Sangfor from "@/uni_modules/Lizii-SangforHar";
export default {
}
</script>
2. 初始化(必须)
<script>
export default {
onLoad() {
//初始化
let sdkMode = 1 >> 0;//SDK模式选项, (鸿蒙暂时只能用这个) 该模式表示只是启用vpn代理功能,不启用终端安全沙箱功能(水印,分享隔离,剪切板隔等等安全功能)
let sdkFlags = (1 << 3) | (1 << 1);//SDK基本配置选项
let extra = {};//额外配置,补充属性
Sangfor.initSDK(sdkMode, sdkFlags, extra);
}
}
</script>
3. 设置认证回调
//设置认证回调
Sangfor.setAuthResultListener({
onAuthSuccess: (message) => {
console.log(message);
},
onAuthProcess: (nextAuthType, message) => {
console.log(nextAuthType);
console.log(message);
},
onAuthFailed: (message) => {
console.log(message);
}
});
4. 用户名密码主认证
//用户名密码主认证
let url = "https://10.244.3.23";//服务器地址
let username = "sangfor";//用户名信息
let password = "123";//用户密码
Sangfor.startPasswordAuth(url, username, password);
5. 短信主认证
//短信主认证
let url = "";//请求认证的服务器地址信息
let phoneNumber = "";//手机号码:86-xxxxxxxxxxx@认证域
Sangfor.startPrimarySmsAuth(url, phoneNumber);
6. 处理二次认证-短信认证
//处理二次认证-短信认证
let authType = 2;//认证类型
let smsCode = "xxxx"; // 短信验证码
let authInfo = {
"svpn_inputsms":smsCode
};//认证信息,直接透传认证信息
Sangfor.doSecondaryAuth(authType, authInfo);
7. 注销接口
//注销接口
Sangfor.logout();
8. 设置注销事件监听回调
//设置注销事件监听回调
Sangfor.registerLogoutListener({
onLogout: (type, message) => {
console.log(type);
console.log(message);
}
});
9. 免密认证
//免密认证
let ret = Sangfor.startAutoTicket();
if (ret == true) {
uni.showToast({
title:"免密成功"
});
} else {
}
10. 设置SPA安全码
//设置SPA安全码
let spaConfig = "{\"loginAddress\":\"https://10.242.4.232\", \"spaSecret\":\"j7vU-uv2V-GrJu\"}";//SPA种子
Sangfor.setSpaConfig(spaConfig, {
onSetSpaConfig: (result, error) => {
console.log(result);
console.log(error);
}
});
11. 重新获取验证码
//重新获取验证码
Sangfor.regetSmsCode({
onRegetSmsCode: (success, message) => {
console.log(success);
console.log(message);
}
});
12. 重新获取图形校验码
//重新获取图形校验码
Sangfor.regetRandCode({
onRegetRandCode: (success, randcodeImage) => {
console.log(success);//true: 成功, false: 失败
console.log(randcodeImage);//图片base64字符串
}
});
枚举常量
1. SDK模式
/**
* SDK模式
*/
export const enum SFSDKMode {
MODE_NONE = 0, // 没有类型
MODE_VPN = 1 << 0, // SDK启用VPN接入功能
MODE_SANDBOX = 1 << 1, // SDK启用安全沙箱功能
MODE_VPN_SANDBOX = 1 << 0 | 1 << 1, // SDK启动VPN和安全沙箱功能
MODE_SUPPORT_MUTABLE = 1 << 0 | 1 << 1 | 1 << 2, // SDK启动模式会根据配置变动
}
2. SDK配置选项
/**
* SDK配置选项
*/
export const enum SFSDKFlags {
FLAGS_NONE = (1 << 0), //初始化值
FLAGS_VPN_MODE_TCP = (1 << 1), //设置VPN工作模式为TCP模式
FLAGS_VPN_MODE_L3VPN = (1 << 2), //设置VPN工作模式L3VPN模式
FLAGS_HOST_APPLICATION = (1 << 3), //设置SDK工作模式为主应用模式
FLAGS_SUB_APPLICATION = (1 << 4), //设置SDK工作模式为子应用模式
FLAGS_ENABLE_FILE_ISOLATION = (1 << 5), //启用文件隔离功能
FLAGS_SUPPORT_MANAGE_POLICY = (1 << 6), //SDK支持外部(第三方)更新策略
FLAGS_MAIN_PROCESS = 1 << 10, //主进程
FLAGS_PLUGIN_PROCESS = 1 << 11, //插件进程
FLAGS_CHILD_PROCESS = 1 << 12, //子进程
FLAGS_IS_AWORK = 1 << 13, //aWork
FLAGS_ATRUST_SDK = 1 << 14, //aTrust App标记
FLAGS_INJECT_SDK = 1 << 15, // 封装应用,封装应用用到
FLAGS_VPN_SERVER = 1 << 16, // 对接vpn服务器
FLAGS_SDP_SERVER = 1 << 17, // 对接sdp服务器
FLAGS_DISABLE_IPV6_RESOLVE = 1 << 19, // 针对接入服务器的地址不做ipv6解析,
// 用于处理某些用户ipv6解析无响应导致整体解析慢的问题, 当前仅对SDP生效
FLAGS_ATRUST_AUTO_TEST = 1 << 20, //aTrust App自动化标记
FLAGS_ATRUST_CHANNEL_PROCESS = 1 << 22, //安卓Atrust推送进程,只做网络拦截
}
3. SDK额外配置,补充属性
/**
* SDK额外配置,补充属性
*/
export const enum SFSDKExtras {
EXTRA_KEY_FILE_ISOLATION = "kExtraFileIsolation", // 设置文件加密隔离
EXTRA_KEY_HOSTAPP_PACKAGE_NAME = "kExtraHostAppPackageName", // 主应用包名
EXTRA_KEY_AWORK_CURRENT_VERSION = "kExtraAworkCurrentVersion", // aWork版本信息
EXTRA_KEY_INJECT_APPID = "kExtraAppId", // 设置封装应用的appId
EXTRA_KEY_ENABLE_APPSTORE = "kExtraEnableAppStoreKey", // 启用应用商店
EXTRA_KEY_ENCAP_TYPE = "KExtraEncapType" // 封装类型
}
4. 认证类型
/**
* 认证类型
*/
export const enum SFAuthType {
/**
* 证书认证
*/
AUTH_TYPE_CERTIFICATE = (0),
/**
* 用户名密码认证
*/
AUTH_TYPE_PASSWORD = (1),
/**
* 短信认证
*/
AUTH_TYPE_SMS = (2),
/**
* 硬件特征码认证
*/
AUTH_TYPE_HARDID = (4),
/**
* 挑战认证或者Radius认证
*/
AUTH_TYPE_RADIUS= (6),
/**
* 令牌认证
*/
AUTH_TYPE_TOKEN= (7),
/**
* 授权认证
*/
AUTH_TYPE_AUTHOR= (10),
/**
* 钉钉code认证
*/
AUTH_TYPE_DINGDING_CODE= (11),
/**
* Session认证
*/
AUTH_TYPE_SESSION= (16),
/**
* 无认证
*/
AUTH_TYPE_NONE= (17),
/**
* 强制修改密码认证
*/
AUTH_TYPE_RENEW_PASSWORD= (18),
/**
* 图形校验码认证
*/
AUTH_TYPE_RAND= (22),
/**
* Sdp SangforId
*/
AUTH_TYPE_SANGFORID= (23),
/**
* Sdp 企业微信认证
*/
AUTH_TYPE_QYWECHAT= (24),
/**
* Totp谷歌令牌认证
*/
AUTH_TYPE_TOKEN_TOTP= (25),
/**
* radius令牌认证
*/
AUTH_TYPE_TOKEN_RADIUS= (26),
/**
* https令牌认证
*/
AUTH_TYPE_TOKEN_HTTPS= (27),
/**
* 认证策略检查-内部认证
*/
AUTH_TYPE_AUTH_CHECK= (28),
/**
* 上线后纯净bindAuthDevice,仅接口调用,无需参数
*/
AUTH_TYPE_PURE_BIND_AUTH_DEVICE= (29),
/**
* 上线前申请绑定授信终端认证, 提供申请理由
*/
AUTH_TYPE_APPLY_BIND_AUTH_DEVICE= (30),
/**
* 上线前授信终端解绑认证, 需要先解绑其它终端才能继续认证
*/
AUTH_TYPE_UNBIND_AUTH_DEVICE= (31),
/**
* 上线后纯净trustDevice接口, 仅接口调用,无需参数
*/
AUTH_TYPE_PURE_TRUST_DEVICE= (32),
/**
* 上线后申请绑定授信终端认证, 提供申请理由
*/
AUTH_TYPE_APPLY_TRUST_DEVICE= (33),
/**
* 上线后授信终端解绑认证, 需要先解绑其它终端才能继续认证
*/
AUTH_TYPE_UNBIND_TRUST_DEVICE= (34),
/**
* 增强认证预认证
*/
AUTH_TYPE_PRE_ENHANCED= (35),
/**
* 找回密码,先获取验证码
*/
AUTH_TYPE_FORGET_PWD_PRE= (36),
/**
* 找回密码
*/
AUTH_TYPE_FORGET_PWD= (37),
/**
* 重置密码
*/
AUTH_TYPE_RESET_PWD= (38),
/**
* cas认证
*/
AUTH_TYPE_CAS= (39),
AUTH_TYPE_CAS_PRE= (40), // cas认证预处理, 需要调用该认证来进行
/* 短信主认证begin */
AUTH_TYPE_PRIMARY_SMS_PRE= (41), //短信主认证之前要预认证,用来发送短信
AUTH_TYPE_PRIMARY_SMS= (42), //短信主认证
AUTH_TYPE_THIRD_CODE= (43), //第三方认证
/* 短信主认证end*/
/**
* Ticket认证
*/
AUTH_TYPE_TICKET= (1<<11),
/**
* 未知认证类型
*/
AUTH_TYPE_UNKNOWN= (-1)
}
5. 注销类型
/**
* 注销类型
*/
export const enum SFLogoutType {
SFLogoutTypeUser = 0, //用户注销
SFLogoutTypeTicketAuthError = 1, //免密失败
SFLogoutTypeServerShutdown = 2, //服务端shutdown
SFLogoutTypeAuthorError = 3, //授权失败
SFLogoutTypeOther = 100, //其他注销
}
6. KEY常量
public class SFConstants {
public static final String AUTH_KEY_USERNAME = "svpn_name";
public static final String AUTH_KEY_PASSWORD = "svpn_password";
public static final String AUTH_KEY_DINGTALK_USERNAME = "username";
public static final String AUTH_KEY_DINGTALK_SIGN = "sign";
public static final String AUTH_KEY_DINGTALK_REQUESTID = "requestID";
public static final String AUTH_KEY_DINGTALK_TIMESTAMP = "timeStamp";
public static final String AUTH_KEY_DINGTALK_CUSTOMHEADERS = "customHeaders";
public static final String AUTH_KEY_SESSION = "svpn_session";
public static final String AUTH_KEY_CERT_PATH = "svpn_cert_path";
public static final String AUTH_KEY_CERT_PASSWORD = "svpn_cert_password";
public static final String AUTH_KEY_PRIMARYSMS_PHONE = "sms_phone";
public static final String AUTH_KEY_PRIMARYSMS_CODE = "sms_code";
public static final String AUTH_KEY_AUTH_DEVICE_REASON = "reason";
public static final String AUTH_KEY_AUTH_DEVICE_UNBIND = "unbindList";
public static final String AUTH_KEY_AUTH_DEVICE_DATA = "auth_key_auth_device_data";
public static final String AUTH_KEY_NEXT_AUTH_TYPE = "auth_key_next_auth_type";
public static final String AUTH_KEY_NEXT_AUTH_MESSAGE = "auth_key_next_auth_message";
public static final String AUTH_KEY_PRIMARYSMS_AREA = "sms_area";
public static final String AUTH_KEY_DINGTALK_CODE = "dingtalk_code";
public static final String AUTH_KEY_RANDCODE = "svpn_rand_code";
public static final String AUTH_KEY_SMS = "svpn_inputsms";
public static final String AUTH_KEY_ID = "authId";
public static final String AUTH_KEY_FORGET_PWD_DOMAIN = "domain";
public static final String AUTH_KEY_FORGET_PWD_SENDKEY = "sendkey";
public static final String AUTH_KEY_TOKEN = "svpn_inputtoken";
public static final String AUTH_KEY_TOTP_TOKEN = "action";
public static final String AUTH_VAULE_TOTP_TOKEN = "rebind";
public static final String AUTH_KEY_RADIUS_CODE = "svpn_inputradius";
public static final String AUTH_KEY_RENEW_OLD_PASSWORD = "pripsw";
public static final String AUTH_KEY_REWNEW_NEW_PASSWORD = "newpsw";
public static final String AUTH_KEY_USER_CONTENT_DATA = "kAuthKeyUserContentData";
public static final String AUTH_KEY_OLD_PASSWORD = "oldPassword";
public static final String AUTH_KEY_NEW_PASSWORD = "newPassword";
public static final String AUTH_KEY_REMEMBER_SECOND_AUTH = "rememberSecondAuth";
public static final String AUTH_KEY_REMEMBER_ENHANCE_AUTH = "rememberEnhanceAuth";
}