更新时间:2022-01-11
在 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)
|
|
如:{{md5:user.user_pwd}}计算用户密
码的 md5 值。
|
sha1
|
{{sha1:data}}
|
对模板变量(参考表 1)计算 sha1 值。
如:{{sha1:user.user_pwd}}计算用户密码的 sha1 值。
|
encodeURIComponent
|
{{encodeURIComponent:data
}}
|
对模板变量(参考表 1)进行 url 编码。不会被此方法编码的字符:- _ . ! ~ * ' ( ) 。
如:
{{encodeURIComponent:user.user_not e}}
,对用户描述信息 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}},
|
表 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”。只有当认证成功后才会设置用户属性字段。
授权策略
用户认证成功后将按照配置的授权策略细分权限。
组映射
是否启用组映射:只有当响应解析规则中配置了用户组,才能启用。 添加:根据外部认证的字段映射到本地用户组。
删除:删除选择的映射关系。
编辑:编辑选择的映射关系数据。
自动同名映射:启用后,将默认把统一认证服务器返回的用户组映射到 VPN 本地同名的用户组,此功能有以下约束:
若统一认证服务器返回的用户组,既满足手动添加规则又满足自动同名映射规则 时,默认采用手动添加规则。
若统一认证服务器返回的用户组无组路径(不带/ ),则 VPN 本地遍历用户组, 并默认取第一个找到的同名用户组。此场景需要保证用户组名在 VPN 本地是无同名的。
如果未设置映射,将其自动映射到目标:默认目标是默认用户组,可以修改。如果非 VPN 本地用户登录成功且无组映射关系时,将被归属到设置的目标组,继承组的权限和策略。
角色映射
是否启用角色映射:只有当响应解析规则中配置了角色,才能启用。添加:配置统一认证服务器返回的角色和 VPN 本地角色的映射关系。删除:删除选择的映射关系数据。
编辑:编辑选择的映射关系数据。
自动同名映射:启用后,将默认把统一认证服务器返回的角色映射给 VPN 本地同名角色。