更新时间:2022-01-08
在 SSL 设备控制台【SSL VPN 设置】-【认证设置】-【辅助认证】-【第三方辅助认证】
中点击 按钮 选择 。
认证名称:自定义认证的名称,如 第三方 HTTP 认证对接描述:可以选填认证的描述
服务器配置
按照统一认证服务器提供的 HTTP(S)协议内容进行构造配置。
服务器配置分为普通模式和高级模式。普通模式和高级模式下都能使用模板变量、模板函数,但是使用的方式存在差异。普通模式:在普通的配置页面即可使用普通模式下的模板变量。
高级模式:在“自定义请求变量”和“数据响应预处理”中可使用高级模式中的模板变 量。
注:通过模板函数可以对模板变量或者固定值进行相应的加解密、编解码操作
普通模式下可以使用的模板变量包括:user、config、env。(详见表 1)
模板变量名称
|
普通模式下使用方式
|
说明
|
user
|
{{user.data}}
|
用户在线信息体中的变量和客户端提交的信息
说明:data 支持的扩展参数见表 1.1
|
config
|
{{config.data}}
|
各认证插件中,自有的全局配置变量。如:HTTP(S)验证码认证中的全局配置项《短信内容》
说明:data 支持的扩展参数见表 1.2
|
env
|
{{env.data}}
|
高级模式中脚本定义或响应解析配置中自定义的
说明:data 支持的参数为自定义的变量
|
表 1 普通模式下模板变量
字段
|
使用方式
|
说明 |
备注
|
user_name
|
{{user.user_name}}
|
用户名 |
在主认证时输入了用户名,主认证及后续的认证都能使
用。
|
user_psw
|
{{user.user_psw}}
|
用户密码 |
在主认证时输入了用户密码,主认证及后续的认证都能
使用。
|
user_note
|
{{user.user_note}}
|
用户描述 |
如果是本地用户, 在新建用户时配置了描述信息,使用这个用户的登录时就可以使用;不论是本地用户还是外部用户只要主认证结果有返回描述信息,则后续的认证
也可以使用。
|
login_ip
|
{{user.login_ip}}
|
登录 IP |
在整个认证过程中
都可以使用。
|
mobile_phone
|
{{user.mobile_phone}}
|
手机号码 |
如果是本地用户, 在新建用户时配置了手机号码,使用这个用户的登录时
就可以使用;不论
|
|
|
|
是本地用户还是外部用户只要主认证结果有返回手机号码,则后续的认证
也可以使用。
|
client_type
|
{{user.client_type}}
|
客户端类型 |
在整个认证过程中
都可以使用。
|
lang_type
|
{{user.lang_type}}
|
语言(中文、英文) |
在整个认证过程中
都可以使用。
|
hid
|
{{user.hid}}
|
硬件特征码 |
在使用短信审批硬件特征码,才能获
取到。
|
svpn_inputtok en
|
{{user.svpn_inputtoken}}
|
令牌码 |
在使用令牌辅助认
证时,输入令牌码, 才能获取到。
|
macaddress
|
{{user.macaddress}}
|
mac 地址 |
硬件特征码后面有短信认证或者令牌
认证,才能获取到。
|
hostname
|
{{user.hostname}}
|
主机名 |
硬件特征码后面有短信认证或者令牌
认证,才能获取到。
|
表 1.1 user 模板变量支持的扩展参数
字段名
|
使用方式
|
说明
|
native_code
|
{{config.native_code}}
|
国家码
|
sms_content
|
{{config.sms_content}}
|
短信内容
|
sms_tips
|
{{config.sms_tips}}
|
提示语
|
sms_interval
|
{{config.sms_interval}}
|
发送间隔
|
sms_period
|
{{config.sms_period}}
|
短信有效期
|
sms_code
|
{{config.sms_code}}
|
短信验证码
|
表 1.2 config 模板变量支持的扩展参数
普通模式下可以使用的模板函数包括:base64Encode、base64Decode、md5、sha1、encodeURIComponent、decodeURIComponent、encodeURI、decodeURI。(详见表 2)
|
|
,对用户描述信息 url 编码。 |
decodeURIComponent
|
{{decodeURIComponent:data
}}
|
对模板变量(参考表 1)进行 url 解码。如:
{{decodeURIComponent:user.user_not e}}
,对用户描述信息 url 解码。
|
encodeURI
|
{{encodeURI:data}}
|
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
如:{{encodeURI:user.user_note}}
,对用户描述信息 url 编码。
|
decodeURI
|
{{decodeURI:data}}
|
对模板变量(参考表 1)进行 url 解码。如:{{decodeURI:user.user_note}},
对用户描述信息 url 解码。
|
表 2 模板参数支持的算法
高级模式下可以使用的模板变量包括:user、config、env、response。(详见表 3)
模板变量名称
|
高级模式下使用方式
|
说明
|
user
|
user.data
|
用户在线信息体中的变量和客户端提交的信息
说明:data 支持的扩展参数见表 1.1
|
config
|
config.data
|
各认证插件中,自有的全局配置变量。如:HTTP(S)验证码认证中的全局配置项《短信内容》
说明:data 支持的扩展参数见表 1.2
|
env
|
env.data
|
高级模式中脚本定义或响应解析配置中自定义的
说明:data 支持的参数为自定义的变量
|
response
|
response.data
|
统一认证服务器返回的响应数据。支持:
response.body 包体数据
response.header 头部数据
|
表 3 高级模式下模板变量
高级模式下可以使用的模板函数包括:
模板函数名称
|
高级模式下使用方式
|
说明
|
crypto
|
Crypto.function()
|
Nodejs 的加解密库,function()的支持见:
https://github.com/brix/crypto-js
|
iconv-lite
|
IconvLite.function
()
|
Nodejs 的编解码库,function()的支持见:
https://github.com/ashtuchkin/iconv-lite
|
xml2js
|
Xml2js.function()
|
Nodejs 的 Xml 转 json 库,function()的支持见: https://github.com/Leonidas-from-XIV/node- xml2js
注意:此模板函数只能在响应解析配置的高级模
式中使用
|
cheerio
|
解析复杂的 xml 格式
|
具 体 使 用 请 参
https://cheerio.js.org
|
考
|
库
|
文
|
档
|
:
|
url
|
解析 URL
|
具体使用请参考库的文档:
|
|
|
http://nodejs.cn/api/url.html
|
表 4 高级模式下使用的库
点击 按钮可以添加多次认证交互,最多支持 5 次。一般应用于有多次认证相互的情况下,下一次的请求依赖于上一步的认证结果。
点击 按钮可以删除。
在多步请求中,每步请求都会默认把前面返回的 cookie 带上。如某个请求有 3 步, 第一次返回了 cookie:aa=bb,则第二次请求时会把这个 cookie 带上,第三步时也会带上它。
请求配置
GET
请求地址:GET,以 GET 方法向配置的地址发送 HTTP(S)请求。后面填写请求的地址, 支持 http 和 https 协议
请求超时:设置超时时间,默认 15 秒。
请求 URL 参数:配置 HTTP(S)协议的请求 URL 参数,其中字段名的值可以填写固定值或者模板变量(见表 1);对添加的数据可以进行删除、编辑操作。
请求头部:配置 HTTP(S)协议的请求头部,其中字段名的值可以填写固定值或者模板变量(见表 1);对添加的数据可以进行删除、编辑操作。
请求 Cookie:配置 HTTP(S)协议的请求 cookie,其中字段名的值可以填写固定值或者模板变量(见表 1);对添加的数据可以进行删除、编辑操作。
POST
请求地址:POST,以 POST 方法向配置的地址发送 HTTP(S)请求。
请求超时:设置超时时间,默认 15 秒。
请求 URL 参数:配置 HTTP 协议的请求 URL 参数,其中字段名的值可以填写固定值或者模板变量(见表 1);对添加的数据可以进行删除、编辑操作。
请求头部:配置 HTTP 协议的请求头部,其中字段名的值可以填写固定值或者模板变量
(见表 1);对添加的数据可以进行删除、编辑操作。
请求 Cookie:配置 HTTP 协议的请求 cookie,其中字段名的值可填写固定值或者模板变量(见表 1);对添加的数据可以进行删除、编辑操作。
请求体:配置 HTTP 协议 POST 方法的请求体,其内容可以填写固定值或者模板变量(见表 1)。
自定义变量:若预定义的变量不满足需求时,可以使用自定义请求变量,可通过 nodejs 脚本来自定义新的模板变量,并能在请求配置中被使用。
响应配置
格式:将统一认证服务器返回的结果数据,按照 XML 或者 JSON 的格式进行解析。添加:配置响应解析规则。即将统一认证服务器返回的结果数据,按照 XML 或者 JSON格式解析字段名的值,并将值保存至对应配置的变量名(支持的变量见下表)中。
可存储的变量
|
说明
|
user.mobilephone
|
手机号码
|
user.user_note
|
用户描述
|
user.grp_id
|
所属用户组
|
user.role_ids
|
角色
|
env.data
|
env环境变量
|
表 5 响应解析存储变量名
删除:删除选择的响应解析规则数据编辑:编辑选择的响应解析规则数据
注意:在响应解析存储变量名(表 5)表中,第三方返回的手机号、用户描述、所属用户组、角色、环境变量,只在当前整个认证周期内有效,第二次认证时会重置。
认证成功条件:配置认证成功条件表达式,即只有当表达式成立时,才认为当次认证请求通过。表达式中可以填写固定值或者模板变量,
注意: 应当谨慎填写此表达式,避免原本认证失败的却认证成功,建议是多种情况的账号测试,如认证成功的账号、认证失败的账号。
启用 Cookie 代理下发:启用后,VPN 将会把认证过程中统一认证服务器返回结果中的 cookie,下发至 VPN 客户端。此功能能可以用来实现单点登录。
子域名:VPN 代理下发 cookie 的域名,需要保证和 VPN 的域名为同根域。
响应数据预处理:启用后,可通过 nodejs 脚本来对统一认证服务器返回的结果数据进行预处理。高级模式中预处理后的数据,将再被配置的响应解析规则进行解析。
注意: 结果是保存在 result 这个字段中,并且 result 默认为 json 格式,我们在处理数据时也是从这个字段中提取数据,使用方法 result.code = 0 或者 result[“code”]= 0,当存在多级时 result.xxx.xxx = “xxx”。只有当认证成功后才会设置用户属性字段。