You need to enable JavaScript to run this app.
导航
远程鉴权
最近更新时间:2025.10.27 10:41:16首次发布时间:2022.08.31 21:50:42
复制全文
我的收藏
有用
有用
无用
无用

本文档介绍火山引擎内容分发网络(CDN)提供的远程鉴权功能。

远程鉴权概述

如果您的站点有专属的鉴权服务器对用户请求进行鉴权,您可以在 CDN 中配置远程鉴权。

远程鉴权的流程如下:

  1. 用户向您的站点发送请求。请求中包含鉴权参数。
  2. 在收到用户请求后,CDN 将用户请求转发到鉴权服务器。
  3. 鉴权服务器对用户请求进行鉴权,并将鉴权结果返回给 CDN。
  4. CDN 根据鉴权结果,将用户请求的内容发送给用户或者拒绝用户请求。

远程鉴权与 URL 鉴权的区别

URL 鉴权:CDN 直接对请求进行鉴权。

远程鉴权:CDN 不对请求进行鉴权,而是转发请求并从鉴权服务器接收鉴权结果。

功能优先级

CDN 提供的一系列访问控制功能有不同的优先级。在 CDN 处理用户请求时,这些功能按优先级对请求生效。参见 访问控制功能的优先级

操作步骤

  1. 登录 火山引擎内容分发网络控制台
  2. 在左侧导航栏,点击 域名管理
  3. 域名管理 页面,找到需要配置的域名,点击 管理
  4. 定位 远程鉴权 模块。
    • 如果您使用的是旧版域名管理页面,点击 编辑配置,然后在 访问控制 标签页中定位 远程鉴权 模块。
    • 如果您使用的是新版域名管理页面,点击 编辑域名。在页面左侧的树状配置项列表中,定位 功能配置 > 访问控制 > 远程鉴权。如果该模块置灰,点击模块右边的 +
      关于新旧版域名管理页面的区别,参见 新版域名配置
  5. 远程鉴权 模块中,设置 状态 为启用。
  6. 配置以下标签页上的设置。
  7. 配置完成后,点击 提交编辑

生效对象

在该标签页上,您可以添加一个或者多个规则。您最多可以添加 50 个规则。当 CDN 收到一个用户请求时,会根据规则的出现顺序依次将规则与请求相匹配。如果一个规则匹配了请求,该请求就会进入远程鉴权的流程。

说明

如果您需要对所有请求进行鉴权,可以添加一条规则并指定以下配置:

  • 设置 规则类型目录匹配
  • 设置 规则/

Image

配置说明

配置

说明

规则类型

规则的匹配条件。CDN 将匹配的请求发送到鉴权服务器进行认证。该配置有以下选项:

  • 文件后缀:表示规则用于匹配指定扩展名的文件的请求。
  • 目录匹配:表示规则用于匹配指定目录下文件的请求。
  • 文件全路径:表示规则用于匹配指定文件的请求。

是否匹配

指定匹配的方式。该配置的选项如下:

  • 匹配:表示匹配规则内容的请求需要被鉴权。
  • 不匹配:表示不匹配规则内容的请求需要被鉴权。

需要留意的是,如果您添加了多条规则,这些规则需要设置为相同的匹配方式。

规则

表示规则的内容,长度不能超过 1,024 个字符,不能包含以下字符:

  • 连续斜杠(//)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)。

同时,

  • 如果规则类型是 文件后缀,规则内容必须是一个或者多个以分号(;)分隔的文件后缀。文件后缀无需以句点(.)开头。例如:png;txt
  • 如果规则类型是 文件目录,规则内容必须是一个或者多个以分号(;)分隔的目录路径。目录路径必须以斜杠(/)开头和结尾。例如:/chs/foods/;/us/birds/
  • 如果规则类型是 文件全路径,规则内容必须是一个或者多个以分号(;)分隔的文件路径。文件路径必须以斜杠(/)开头,可以包含星号(*)用来表示一个或者多个字符。例如:/chs/foods/local*sets;/us/birds/chickadee

鉴权请求地址

在该标签页上,您指定鉴权服务器的配置。
Image

配置说明

配置

说明

示例

远程鉴权地址(主)

表示主鉴权服务器的 URL,长度不能超过 100 个字符。主服务器 URL 必须采用以下格式之一:

  • ://:
  • ://:

http 或者 https 不能是 localhost 不能是 127.0.0.1。: 是可选的。

https://example.com

远程鉴权地址(备)

表示备鉴权服务器的 URL,长度不能超过 100 个字符,格式和输入要求与主服务器 URL 相同。

主备切换逻辑
对于单个请求,如果鉴权异常发生,CDN 不会将请求发送给备鉴权服务器,而是根据 鉴权结果 标签页的配置处理用户请求。关于鉴权异常的定义,参见文档最后 异常执行策略 配置的说明。

如果在当前分钟内连续 25 次发生鉴权异常,则主服务器的当前 IP 地址将被添加到黑名单。接下来,对于新收到的请求:

  • 如果主服务器的域名解析到多个 IP 地址,CDN 会将该请求发送到另一个 IP 地址。同样,如果在当前分钟内连续 25 次发生鉴权异常,则该 IP 地址将被添加到黑名单。
  • 如果所有 IP 地址都在黑名单中,CDN 会将该请求发送到备鉴权服务器。

在下一分钟开始时,黑名单将被清空。对于新收到的请求,CDN 会将请求发送到主鉴权服务器。

请求路径

表示鉴权路径。鉴权服务器的地址和该路径组成了鉴权 URL。CDN 会把用户请求转发到该鉴权 URL。该配置的选项如下:

  • 遵循用户请求路径:表示鉴权路径与用户请求 URL 中的路径相同。
  • 指定具体请求路径:表示一个指定的路径。您需要在 鉴权路径 中指定该路径。

鉴权路径

如果 请求路径指定具体请求路径,该配置才会出现。在该配置中,您指定一个鉴权路径。鉴权路径必须以斜杠(/)开头,长度不能超过 100 个字符。鉴权路径可以包含除了以下字符的可打印 ASCII 字符:

  • 连续的斜杠(//)、百分号(%)、美元符号($)、空格、问号(?)、Delete(ASCII code 127)。

/sign

请求方法

表示在发送鉴权请求时,CDN 所使用的请求方法。该配置的选项如下:

  • 跟随用户请求的方法:表示鉴权请求使用的方法与用户请求相同。
  • GET:表示鉴权请求使用 GET 方法。
  • POST:表示鉴权请求使用 POST方法。
  • HEAD:表示鉴权请求使用 HEAD 方法。

鉴权请求参数

在该标签页上,您指定鉴权请求需要包含的参数。
Image
#{style="margin: 0"}#

配置说明

配置

说明

用户请求参数

表示哪些用户请求 URL 中的查询参数包含在鉴权请求中。该配置有以下选项:

  • 保留全部参数:表示鉴权请求包括用户请求 URL 中的所有查询参数。
  • 删除全部参数:表示鉴权请求不包括用户请求 URL 中的任何查询参数。
  • 保留部分参数:表示鉴权请求包括用户请求 URL 中的指定的查询参数。

参数清单

如果 用户请求参数保留部分参数,该配置才会出现。该配置表示用户请求 URL 中的哪些查询参数需要包括在鉴权请求中。多个参数用分号 (;) 分隔,总长度不能超过 1,024 个字符。参数名称是大小写敏感的,可以包含除了以下字符以外的可打印 ASCII 字符:

  • 空格、双引号(")、Delete(ASCII code 127)

添加鉴权请求参数

该配置表示您需要额外添加的查询参数。您最多可以添加 50 个参数。

请求参数名称

表示您需要添加的一个查询参数的名称。参数名称不能超过 1,024 个字符,可以包含除了以下字符的可打印 ASCII 字符:

  • 双引号(")、空格、Delete(ASCII code 127)

取值方式

表示该查询参数的值是如何定义的。该配置有以下选项:

  • 常量:表示该参数值是一个固定值,类型是字符串。
  • 变量:表示该参数的值来自一个变量。参见 变量说明
  • 自定义:表示该参数的值来自一个表达式。表达式中可以包含字符串和变量。

参数取值

表示该查询参数的值。该配置的说明如下:

  • 如果 取值方式常量,您指定一个固定值作为该参数的值,长度不能超过 1,024 个字符。该参数值不能以美元符号($)开头,可以包含除了以下字符的可打印 ASCII 字符:
    • 双引号(")、Delete(ASCII code 127)
  • 如果 取值方式变量,您需要从列表中选择一个变量。您选择的变量的值会作为该参数的值。
  • 如果 取值方式自定义,您需要输入一个表达式。表达式由字符串和变量组成。变量需要包裹在 {} 中,以 $ 开头。例如 bind${request_uri}to${local_ip}done

变量说明

CDN 提供了以下变量。

变量

说明

示例

host

表示用户请求中 Host 头的值。

example.com:8080

ua

表示用户请求中 User-Agent 头的值。

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail

referer

表示用户请求中 Referer 头的值。

https://www.example.com/file?name=123

content_type

表示用户请求中 Content-Type 头的值。

text/html

X-Forwarded-For

表示用户请求中 X-Forwarded-For 头的值。

20.5.118.10

client_ip

表示发送用户请求的 IP 地址。

15.15.15.10

scheme

表示用户请求使用的协议。

https

server_protocol

表示用户请求使用的协议的版本。

HTTP/2.0

URI

表示用户请求中的 URL,不包含查询字符串。

/dir/page.php

req_args

表示用户请求中所有的查询参数。

color=red&n=10

request_method

表示用户请求使用的请求方法。

GET

request_uri

表示用户请求中的 URL,包含查询字符串。

/dir/page.php?color=red&n=10

local_ip

表示在 CDN 中,响应用户请求的边缘节点的 IP 地址。

267.89.0.45

req_time

表示 CDN 收到用户请求的时间。关于时间格式,请参见示例。

18/Apr/2022:16:48:48 +0800

msec

表示当前的时间。格式是十进制的 Unix 时间戳。

1650558396

鉴权请求头

在该标签页上,您指定鉴权请求需要包含的请求头。
Image

配置说明

配置

说明

HOST 请求头

表示鉴权请求中 HOST 头部的值。该配置有以下选项:

  • 加速域名:表示 HOST 头部的值与加速域名相同。
  • 自定义:表示一个指定的 HOST 头部值。如果您选择该选项,页面会出现 自定义请求 HOST 配置。在该配置中,您需要输入一个 HOST 头部的值,长度不能超过 1,024 个字符。
    Image

用户其他请求头

表示哪些用户请求中的请求头包含在鉴权请求中。该配置有以下选项:

  • 保留全部头部:表示鉴权请求包含用户请求中的所有请求头。
  • 删除全部头部:表示鉴权请求不包含任何用户请求中请求头。
  • 保留部分头部:表示鉴权请求包含用户请求中的指定请求头。

头部清单

如果 用户请求头保留部分头部,该配置才会出现。该配置指定需要包含在鉴权请求中的请求头。多个请求头用分号 (;) 分隔。请求头是大小写不敏感的。

添加鉴权请求头

该配置表示您需要额外添加的请求头。您最多可以添加 50 个请求头。

请求头部名称

表示一个您需要添加的请求头。请求头是大小写不敏感的,不能是 Host,长度不能超过 1,024 个字符。该请求头可以包含除了以下字符以外的可打印 ASCII 字符:

  • 下划线(_)、空格、双引号("),Delete(ASCII code 127)

取值方式

表示该请求头的值是如何定义的。该配置有以下选项:

  • 常量:表示该请求头的值是一个固定值,类型是字符串。
  • 变量:表示该请求头的值来自一个变量。参见 变量说明
  • 自定义:表示该请求头的值来自一个表达式。表达式中可以包含字符串和变量。

参数取值

表示该请求头的值。该配置的说明如下:

  • 如果 取值方式常量,您指定一个固定值作为该请求头的值。该值的长度不能超过 1,024 个字符,不能以美元符号($)开头,可以包含除了以下字符以外的可打印 ASCII 字符:
    • 双引号(")、Delete(ASCII code 127)。
  • 如果 取值方式变量,您需要从列表中选择一个变量。您选择的变量的值会作为该请求头的值。
  • 如果 取值方式自定义,您需要输入一个表达式。表达式由字符串和变量组成。变量需要包裹在 {} 中,以 $ 开头。例如 my${host}is${referer}great

鉴权结果

在该标签页上,您指定 CDN 是如何处理鉴权服务器返回的鉴权结果的。

在截图所展示的配置中,缓存key 中指定的字段是 URIclient_ip。该配置表示 CDN 基于用户请求的以下属性对鉴权结果进行缓存:

  • 请求来自的 IP 地址
  • 请求的 URL

注意

在您设置缓存key 时, URL 字段是必须包含的,不然 CDN 无法判断鉴权结果所对应的请求文件。

这样,之后对于来自相同 IP 地址的请求,如果请求 URL 是相同的,CDN 会使用缓存的鉴权结果。
Image

配置说明

配置

说明

鉴权成功状态码

表示从鉴权服务器返回的状态码中,哪些被认为是鉴权成功。默认值是 200。

您可以输入范围在 200-299 中的一个或者多个状态码。多个状态码使用分号(;)分隔。您也可以输入 2xx 表示 200-299 范围中的任意一个状态码。

鉴权失败状态码

表示从鉴权服务器返回的状态码中,哪些被认为是鉴权失败。默认值是 401。

您可以输入范围在 400-499 中的一个或者多个状态码。多个状态码使用分号(;)分隔。您也可以输入 4xx 表示 400-499 范围中的任意一个状态码。

其他状态码

该配置表示在满足以下所有条件时,CDN 对用户请求的处理方式。

  • 鉴权服务器返回的状态码不是您指定的表示鉴权成功的状态码。
  • 鉴权服务器返回的状态码不是您指定的表示鉴权失败的状态码。

该配置有以下选项:

  • 默认放行:表示 CDN 认为用户请求鉴权成功,并将请求的文件返回给用户。
  • 默认拦截:表示 CDN 认为用户请求鉴权失败,拒绝该用户请求。

鉴权结果缓存

表示 CDN 是否缓存鉴权结果,也就是鉴权服务器返回的鉴权状态码。您可以设置该配置为 开启 或者 关闭。默认是 关闭

在开启该配置后,对于收到的用户请求,CDN 会检测该请求的鉴权状态码是否已被缓存。如果鉴权状态码已被缓存,CDN 则使用该鉴权状态码来确定是否将请求的文件发送给用户。

该配置可以提升 CDN 响应用户请求的效率。

缓存时间

表示鉴权状态码的缓存时间,单位是秒。该配置仅在 鉴权结果缓存开启 的情况下才出现。您可以输入范围在 1-86400 之间的一个值。86,400 秒表示 24 小时。

缓存key

表示缓存的鉴权状态码中所包含的字段。这些字段是您在该配置中定义的。每个鉴权状态码都有一个唯一的缓存key。该配置仅在 鉴权结果缓存开启 的情况下才出现。

同时,CDN 通过缓存key 来判断用户请求是否命中了鉴权状态码的缓存。 当收到一个请求时,CDN 尝试使用请求中的字段来匹配缓存key。如果找到了匹配,CDN 就会使用该缓存的鉴权状态码。

注意

缓存key 中必须包含 URL 这个字段,不然 CDN 无法判断鉴权结果所对应的请求文件。

响应客户端拦截状态码

表示鉴权失败时,CDN 响应用户请求的状态码。默认的状态码是 403。

您可以输入范围在 400-499 中的任意一个状态码。

鉴权超时时间

表示鉴权请求的超时时间,单位是毫秒,默认值是 200。您可以输入的超时时间的范围是 200-3600。

异常执行策略

该配置表示鉴权异常发生时,CDN 处理用户请求的方式。

该配置有以下选项:

  • 默认放行:表示 CDN 认为用户请求鉴权成功,并将请求的文件返回给用户。
  • 默认拦截:表示 CDN 认为用户请求鉴权失败,拒绝该用户请求。

鉴权异常包括,但不限于,以下情况:

  • 鉴权请求超时。
  • 鉴权服务器拒绝了鉴权请求。
  • CDN 无法与鉴权服务器建立连接。