SSL VPN

深信服SSL VPN集SSL/IPSec于一身,帮助企业构建端到端的安全防护体系,业内拥有多项加密技术,多种认证方式、主从绑定等特色功能,保证远程系统接入的用户身份安全、终端/数据安全、传输安全、应用权限安全和审计安全,具有快速、易用、全面等优势特点,并且连续多年市场占有率第一,一直走在技术前沿,提供优质服务,用户认可度极高。
点击可切换产品版本
知道了
不再提醒
SSL7.6.9R1
{{sendMatomoQuery("SSL VPN","HTTP(S)验证码认证")}}

HTTP(S)验证码认证

更新时间:2022-01-08

在 SSL 设备控制台【SSL VPN 设置】-【认证设置】-【辅助认证】-【第三方辅助认证】中点击新建 按钮 选择HTTP(S)验证码认证 。

认证名称:自定义认证的名称,如 第三方 HTTP 认证对接描述:可以选填认证的描述

重新发送间隔:自定义短信重新发送的间隔验证码有效期:自定义验证码有效时间

国家代码:定义手机号的国家代码

发送验证码方式:发送验证码的方式有两种,有以下区别

1、通过手机号码标识用户;要求用户必须配置手机号码(如未配置,登录时无法进行验证码认证)

2、通过其他信息标识用户,不强制要求用户配置手机号码;进行验证码认证时,可通过用户名、用户描述等信息识别用户,并发送验证码

短信认证提示:弹出短信认证提示框时的提示内容短信内容:自定义短信内容

服务器配置

按照统一认证服务器提供的 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)

   

如:{{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}},

对用户描述信息 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”。只有当认证成功后才会设置用户属性字段。