子域高级认证
子域高级认证为一条已开启 要求登录 的 HTTP / HTTPS 业务 Host 增加条件放行规则。请求首次命中规则时,当前请求先按规则单次放行,并向支持 Cookie 的客户端返回一个短期能力探测;客户端在后续请求带回探测值后,系统才创建仅限当前 Host 的持久临时凭据。没有命中时,仍按正常登录、会话和服务范围处理。
临时凭据不是系统登录:它不会创建登录会话或 IP 授权,不会显示传送门,也不能访问其他 Host。高级认证是一条独立放行路径,不是在现有登录规则上再增加一道校验。
适用条件
- 映射是普通业务 Host,不是鉴权服务。
- Target 使用 HTTP 或 HTTPS。
- 映射已开启
要求登录。 - 规则使用源 IP 或地区时,网关能够识别真实客户端 IP。
在 子域映射 列表中打开业务 Host 右侧菜单,选择 高级认证配置。鉴权 Host、公开映射和 TCP / UDP 映射不会显示该入口。
临时凭据的范围
支持 Cookie 的客户端完成探测并取得持久临时凭据后,在有效期内访问当前 Host 的其他路径或请求方法时,不会要求每次重新满足原条件。因此,路径、Header 或 Query 条件不能当作持续的逐请求访问控制。
不返回 Cookie 的 App、脚本和其他客户端不会创建持久状态;它们的每个请求都必须重新命中规则,并只获得该次请求的放行。WebSocket 升级也只按当前握手单次放行,因为 101 Switching Protocols 不能可靠下发 Cookie;连接断开并重连时会重新匹配。请求日志中的 单次请求放行 用于识别这种状态。
例如,规则只匹配 /health 并不表示持久凭据只开放 /health;浏览器完成探测后,当前 Host 会在临时凭据有效期内整体放行。需要只开放少量固定路径时,使用路径响应、拆分独立 Host,或在上游应用中继续执行权限检查。
通用黑名单、WAF 和历史严格白名单等保护性拒绝仍然优先。高级认证不能用于绕过这些安全边界。
配置有效时间
| 设置 | 默认值 | 可用范围 | 行为 |
|---|---|---|---|
多久未访问后失效 | 24 小时 | 5 分钟~30 天 | 每次有效访问后重新计算空闲时间 |
凭据最长可使用多久 | 30 天 | 5 分钟~365 天 | 从首次签发起计算,不因持续访问延长 |
这两个时间只约束已经通过 Cookie 探测建立的持久临时凭据;单次请求放行不会延续到下一次请求。最长使用时间不能短于空闲失效时间。修改规则、有效时间或启用状态并保存后,系统会轮换策略版本,已有临时凭据随即失效;关闭高级认证时会保留规则草稿,便于之后重新启用。
组织规则组
规则采用“组间 OR、组内 AND”:
规则组 1:条件 A AND 条件 B
OR
规则组 2:条件 C AND 条件 D命中任意一个完整规则组即可签发凭据。每个 Host 最多可配置 16 个规则组,每组最多 16 个条件;启用时至少需要一个非空规则组。
以下宽泛规则会在保存时要求二次确认:
- 整组都使用“不等于”“不属于”等否定条件;
- 只按 HTTP 方法放行;
- 路径规则覆盖根路径
/; - 源网络包含
0.0.0.0/0或::/0。
二次确认只提示规则覆盖面较大,不代表配置已经安全。保存后应立即从符合和不符合条件的外部网络分别验证。
规模与签发限流
单个 Host 的规则还有以下硬限制:
| 项目 | 上限 |
|---|---|
| 每个条件的匹配值或地区选择 | 256 项 |
| 全部条件的匹配值合计 | 4096 项 |
| 正则表达式合计 | 256 个 |
| 单个正则表达式 | 512 字节 |
| 地区和网络条件解析后的 CIDR 合计 | 100000 条 |
| 高级认证配置请求 | 8 MiB |
持久临时凭据只在客户端带回有效探测值且当前没有可复用凭据时创建。系统对同一 Host、同一客户端 IP 限制为每 60 秒最多创建 10 个,对单个 Host 的总创建量限制为每 60 秒 1000 个;单个 Host 最多保留 100000 个活动凭据。如果达到创建频率或容量上限,或持久存储暂时不可用,已经命中规则的当前请求会降级为 单次请求放行,不会因无法持久化而改成拒绝;下一次请求仍须重新命中规则。共享代理出口会让多个客户端计入同一来源,因此前置代理场景必须先确认真实客户端 IP 识别正确。
匹配目标
| 目标 | 可用匹配方式 | 配置要点 |
|---|---|---|
| 源 IP | 等于、不等于、属于 CIDR、不属于 CIDR | 支持 IPv4 与 IPv6;每行一个地址或网段 |
| 源地区 | 属于地区、不属于地区 | 选择省、市、全省或运营商范围,保存时解析为固定 CIDR |
| URL 路径 | 等于、不等于、前缀、非前缀、包含、不包含、RE2 正则、非正则 | 匹配请求路径,不包含域名 |
| 请求 Header | 存在、不存在、等于、不等于、包含、开头、结尾及对应否定、RE2 正则 | 从常用名称中选择或直接输入自定义 Header;值默认区分大小写 |
| Query 参数 | 存在、不存在、等于、不等于、包含、开头、结尾及对应否定、RE2 正则 | 参数和值会进入配置备份 |
| HTTP 方法 | 方法属于集合、方法不属于集合 | 每行一个方法,例如 GET、HEAD |
条件允许填写多个匹配值时,正向条件命中任意一个值即可;否定条件则要求请求值与所有配置值都不匹配。例如两个 不等于 值不是“只要不同于其中一个就放行”,而是必须同时不同于两者。
地区范围在保存时展开并固化为 CIDR。CIDR 数据源之后发生变化时,已保存规则不会自动扩大或缩小;重新打开并保存配置,才会使用当前地区数据重新编译。
Header 名称不能使用 Host、Cookie、Authorization、X-Forwarded-*、X-Real-IP、X-Reauth-* 等凭据、转发或客户端 IP 相关头。使用前置代理时,还应由代理删除或重写外部客户端可伪造的 Header。
Header、Query 和路径匹配内容会以明文保存在配置和备份中,但系统不会把这些配置值作为高级认证诊断内容写入日志、指标或错误详情;请求日志只记录命中的规则组 ID 和临时凭据状态,不回显配置值。不要把可长期使用的高价值密钥直接放入 Query;导出的备份也应按敏感文件保存。
规则示例
要让可信办公网中的受管设备直接进入 nas.example.com,可在同一规则组中配置:
源 IP → 属于 CIDR → 203.0.113.0/24。请求 Header → 等于 → X-Device-ID → 设备标识。
两个条件都满足时才签发当前 Host 的临时凭据。Header 本身可以由客户端构造,因此不能脱离可信来源网络单独作为强身份凭据;上游服务仍应保留自己的权限控制。
验证与排错
- 从真实外部网络发起一条符合规则的请求。
- 在
请求日志中确认鉴权结果为子域规则放行。 - 查看
子域规则组 ID是否为预期规则组,临时凭据状态是否为单次请求放行、已签发、已续期或已复用。首次浏览器请求通常先是单次放行,带回探测 Cookie 后才显示已签发。 - 再从不符合条件的来源测试,确认请求回到正常登录流程。
- 对不会保存 Cookie 的客户端连续请求两次,确认每次都重新匹配并显示单次请求放行;再用浏览器确认探测值能换成持久凭据。
- 修改规则并保存,确认旧浏览器中的临时凭据立即失效。
若源 IP 或地区规则异常,先检查日志中的客户端 IP 与连接来源 IP。若规则无法保存,检查条件值、CIDR 地址族、RE2 正则、地区数据源和网关版本是否匹配。
