SangforAuthManager
SangforSDK VPN认证管理入口类,所有业务以此为核心
名称 SDK_JAVA_VERSION
功能 sdk版本号
名称 addAllowedL3VPNApps
功能 添加可以使用L3VPN的应用列表(称之为白名单应用)
前置条件 1. 需要在L3VPN模式下才可以设置,且必须在初始化前设置,即建立L3VPN隧道前,否则需要重新建立L3VPN才可以生效
2. 该方法只支持Android5.0{@code (API:21)}以上版本的手机
3. 设置的参数列表中必须存放应用包名且必须是已安装的应用包名
4. 调用该接口添加白名单应用后,其他未添加的应用都为黑名单应用(不可使用VPN),集成SDK的应用本身也符合该规则
参数 参数名 类型 方向 说明
packagesList List<String>  IN 允许使用vpn的应用包名
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
名称 addStatusChangedListener
功能 添加vpn状态变化监听器,可注册多个监听器
注意,对于同一个位置,需要每次调用时传入相同的回调,否则,会导致每次调用此接口回调函数就会增加一个的问题,导致回调被多次调用,造成混乱。
后置条件 需要登录vpn后才能回调通知vpn状态
参数 参数名 类型 方向 说明
statusChangeListener OnStatusChangedListener OUT 回调函数,通知vpn变化
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
异常 类型 消息 说明
SFException EXCEPTION_STATUS_CHANGE_LISTENER 参数不可为空
名称 changePassword
功能 主动修改密码
前置条件 进行过主认证并认证通过
后置条件 该接口需要进行网络请求,为阻塞接口,需要发起异步任务进行处理。
参数 参数名 类型 方向 说明
oldPassword String IN 旧密码
newPassword String IN 新密码
返回值 类型 ChangePasswordResult 说明 修改密码结果实体类
名称 changeVpnMode
功能 修改vpn模式 目前已废弃,请在主认证中指定模式
前置条件 需在认证前修改vpn模式
参数 参数名 类型 方向 说明
vpnMode IConstants.VPNMode IN vpn模式
名称 clearStatusChangedListener
功能 清除所有vpn状态变化监听器
名称 disableAutoLogin
功能 设置是否关闭后台自动重连,默认开启,不建议调用此接口
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
名称 doCertificateAuth
功能 组合认证:证书认证
存在组合认证时使用,该方法只进行认证过程,不进行vpn初始化过程,注意与{@link #startCertificateAuthLogin}的区别
此认证为辅助认证,不可直接调用。
前置条件 已经进行过主认证(start开头的接口)且需要进行证书认证
参数 参数名 类型 方向 说明
certPath String IN 证书路径
certPassword String IN 证书密码
返回值 类型 说明
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doPasswordAuth
功能 组合认证:用户名密码认证
存在组合认证时使用,该方法只进行认证过程,不进行vpn初始化过程,注意与{@link #startPasswordAuthLogin}的区别
前置条件 已经进行过主认证(start开头的接口)且需要进行用户名密码认证
参数 参数名 类型 方向 说明
userName String IN 用户名
userPassword String IN 用户密码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doRadiusAuth
功能 组合认证:Radius挑战认证
存在组合认证时使用,该方法只进行认证过程,不进行vpn初始化过程
前置条件 已经进行过主认证(start开头的接口)且需要进行挑战认证
参数 参数名 类型 方向 说明
radiusCode String IN 挑战认证码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doRandCodeAuth
功能 组合认证:图形校验码认证
用户名密码连续输错的情况下,会启用图形校验码,使用该接口携带图形校验码进行认证。不进行vpn初始化过程
前置条件 已经进行过主认证(start开头的接口)且需要进行图形校验码认证
参数 参数名 类型 方向 说明
randcode String IN 图形校验码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doRenewPasswordAuth
功能 强制修改密码
后台开启密码策略,登录时对不符合密码策略的密码调用该接口修改密码
前置条件 已经进行过主认证(start开头的接口)且需要修改初始密码
参数 参数名 类型 方向 说明
newPassword String IN 新密码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doRenewPasswordAuth
功能 强制修改密码
后台开启密码策略,登录时对不符合密码策略的密码调用该接口修改密码,,需要携带旧密码
前置条件 已经进行过主认证(start开头的接口)且需要修改初始密码
参数 参数名 类型 方向 说明
oldPassword String IN 旧密码
newPassword String IN 新密码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doSMSAuth
功能 组合认证:短信认证
存在组合认证时使用,该方法只进行认证过程,不进行vpn初始化过程
前置条件 已经进行过主认证(start开头的接口)且需要进行短信认证
参数 参数名 类型 方向 说明
smsCode String IN 短信验证码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 doTokenAuth
功能 组合认证:动态令牌认证
存在组合认证时使用,该方法只进行认证过程,不进行vpn初始化过程
前置条件 已经进行过主认证(start开头的接口)且需要进行动态令牌认证
参数 参数名 类型 方向 说明
token String IN 动态口令
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 enableByPassMode
功能 开启ByPass模式,开启后,所有SDK功能将失效
前置条件 需要在认证之前设置,否则设置无效
名称 getInstance
功能 获取VPN认证管理类的实例
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
名称 getSession
功能 获取共享登录的Session
前置条件 若执行注销流程,Session会立即失效。
返回值 类型 String 说明 共享登录的session
名称 getVpnMode
功能 获取vpn模式
返回值 类型 IConstants.VPNMode 说明 vpn模式
名称 onActivityResult
功能 L3vpn模式必须调用该函数,传递vpn用户授权结果
    注意:当前Activity的launchMode不能设置为 singleInstance,否则L3VPN服务启动会失败。原因是L3VPN模式需要通过startActivityForResult向系统申请使用L3VPN权限,但startActivityForResult有限制,当前Activity的launchMode不能设置为 singleInstance。
EASYAPP模式:请忽略。
前置条件 认证模式为l3vpn且成功申请到vpn权限
参数 参数名 类型 方向 说明
requestCode int IN 结果状态码,应为 IVpnDelegate.REQUEST_L3VPNSERVICE
requestCode int IN 结果状态码
名称 queryStatus
功能 主动获取当前VPN的登录状态
l3vpn模式下此状态只能说明登录状态,不能说明隧道状态
若想获取隧道状态,请使用addStatusChangedListener添加状态回调
后置条件 EasyApp模式下,获取VPN状态是线程阻塞的,请谨慎调用
返回值 类型 IConstants.VPNStatus 说明 在线状态和离线状态
名称 reacquireRandCode
功能 重新获取获取图形校验码
前置条件 在需要进行图形校验码认证且需要重新获取时使用
调用该方法前需要调用setRandCodeListener设置回调,图形校验码通过回调进行返回
名称 reacquireSmsCode
功能 重新获取短信验证码
前置条件 需要进行短信验证码认证且需要重新获取短信验证码
后置条件 该接口需要进行网络请求,为阻塞接口,需要发起异步任务进行处理。
返回值 类型 SmsMessage 说明 短信信息实体类:包含手机号码、短信倒计时。获取失败时返回null
名称 removeStatusChangedListener
功能 移除vpn状态变化监听器
参数 参数名 类型 方向 说明
statusChangeListener OnStatusChangedListener IN 需要移除的状态回调对象
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
异常 类型 消息 说明
SFException EXCEPTION_STATUS_CHANGE_LISTENER 参数不可为空
名称 setAuthConnectTimeOut
功能 设置认证连接的超时时间
若没有设置或设置时间小于0, 则使用默认的超时时间IConstants.AUTH_CONNECT_DEFAULT_TIME_OUT
前置条件 应在认证开始之前设置
参数 参数名 类型 方向 说明
seconds int IN 超时时间,单位为秒
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
名称 setDeviceLanguage
功能 设置VPN语言环境
暂时只支持中文和英文,中文使用IConstants.DeviceLanguage.CHINESE},IConstants.DeviceLanguage.ENGLISH,传入其它值或未设置情形将使用中文。
前置条件 应在认证开始之前设置
参数 参数名 类型 方向 说明
language IConstants.DeviceLanguage IN 语言环境,枚举类型
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
名称 setLoginResultListener
功能 设置VPN登录结果监听器
参数 参数名 类型 方向 说明
listener LoginResultListener IN VPN登录结果监听器
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 参数不可为空
名称 setLogLevel
功能 设置日志打印等级
日志级别参见 IConstants.LogLevel,设置高级别日志等级将过滤低级别日志,比如设置LogLevel.WRAN将过滤INFO级别的日志
未设置或传入null,默认设置为INFO级别
参数 参数名 类型 方向 说明
logLevel LogLevel IN 日志级别
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
名称 setRandCodeListener
功能 设置要展示校验码的实体类,用于在vpnRndCodeCallback中进行回调
参数 参数名 类型 方向 说明
randCodeListener RandCodeListener IN 图形校验码接口类,参考RandCodeListener
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
异常 类型 消息 说明
SFException EXCEPTION_RAND_CODE_LISTENER 参数不可为空
名称 setRandCodeListener
功能 设置要展示校验码的实体类,用于在vpnRndCodeCallback中进行回调
参数 参数名 类型 方向 说明
randCodeListener RandCodeListener IN 图形校验码接口类,参考RandCodeListener
返回值 类型 SangforAuthManager 说明 VPN认证管理类的实例
异常 类型 消息 说明
SFException EXCEPTION_RAND_CODE_LISTENER 参数不可为空
名称 startCertificateAuthLogin
功能 SDK初始化以及进行证书认证
如果是L3VPN模式,需要传递activity上下文,L3vpn模块需要Activity启动VpnService
前置条件 vpn没有开启bypass模式且设置了认证回调LoginResultListener
参数 参数名 类型 方向 说明
application Application IN 应用上下文
activity Activity IN activity上下文,L3VPN模式需要提供Activity上下文,用于启动VpnService
vpnMode IConstants.VPNMode IN vpn模式,枚举类型
EasyAPP模式 IConstants.VPNMode#EASYAPP
L3VPN模式 IConstants.VPNMode#L3VPN
vpnAddress URL IN vpn地址
certificatePath String IN 证书路径
certificatePassword String IN 证书密码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 startDingTalkCodeAuthLogin
功能 专门用于钉钉的code认证
前置条件 vpn没有开启bypass模式且设置了认证回调LoginResultListener
参数 参数名 类型 方向 说明
application Application IN 应用上下文
activity Activity IN activity上下文,L3VPN模式需要提供Activity上下文,用于启动VpnService
vpnMode IConstants.VPNMode IN vpn模式,枚举类型
EasyAPP模式 IConstants.VPNMode#EASYAPP
L3VPN模式 IConstants.VPNMode#L3VPN
vpnAddress URL IN vpn地址
code String IN 钉钉传过来的code
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 startPasswordAuthLogin
功能 SDK初始化以及进行用户名/密码认证,最常用的认证方式
如果是L3VPN模式,需要传递activity上下文,L3vpn模块需要Activity启动VpnService
前置条件 vpn没有开启bypass模式且设置了认证回调LoginResultListener
参数 参数名 类型 方向 说明
application Application IN 应用上下文
activity Activity IN activity上下文,L3VPN模式需要提供Activity上下文,用于启动VpnService
vpnMode IConstants.VPNMode IN vpn模式,枚举类型
EasyAPP模式 IConstants.VPNMode#EASYAPP
L3VPN模式 IConstants.VPNMode#L3VPN
vpnAddress URL IN vpn地址
userName String IN 用户名
userPassword String IN 密码
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 startSessionAuthLogin
功能 SDK初始化以及进行共享session认证
如果是L3VPN模式,需要传递activity上下文,L3vpn模块需要Activity启动VpnService
前置条件 vpn没有开启bypass模式且设置了认证回调LoginResultListener,session可以从getSession接口获取
参数 参数名 类型 方向 说明
application Application IN 应用上下文
activity Activity IN activity上下文,L3VPN模式需要提供Activity上下文,用于启动VpnService
vpnMode IConstants.VPNMode IN vpn模式,枚举类型
EasyAPP模式 IConstants.VPNMode#EASYAPP
L3VPN模式 IConstants.VPNMode#L3VPN
vpnAddress URL IN vpn地址
session String IN 共享session
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 startTicketAuthLogin
功能 SDK初始化以及进行免密登录,最常用的登录类型
如果是L3VPN模式,需要传递activity上下文,L3vpn模块需要Activity启动VpnService
一般而言,使用免密认证接口后,是不会进行二次认证的
前置条件 vpn没有开启bypass模式且设置了认证回调LoginResultListener,vpn曾经成功认证过且没有主动注销
参数 参数名 类型 方向 说明
application Application IN 应用上下文
activity Activity IN activity上下文,L3VPN模式需要提供Activity上下文,用于启动VpnService
vpnMode IConstants.VPNMode IN vpn模式,枚举类型
EasyAPP模式 IConstants.VPNMode#EASYAPP
L3VPN模式 IConstants.VPNMode#L3VPN
异常 类型 消息 说明
SFException EXCEPTION_LOGIN_RESULT_LISTENER 认证结果回调函数为空
名称 ticketAuthAvailable
功能 判断当前是否允许免密登录
参数 参数名 类型 方向 说明
context Context IN 上下文信息,用以获取认证信息
返回值 类型 boolean 说明 true 允许;false 不允许
名称 vpnLogout
功能 主动注销VPN,该接口为异步接口,目前没有回调,需要监听vpn状态才能知道注销情况,后续可以考虑加上