本文档介绍火山引擎内容分发网络(CDN)提供的远程鉴权功能。
如果您的站点有专属的鉴权服务器对用户请求进行鉴权,您可以在 CDN 中配置远程鉴权。
远程鉴权的流程如下:
URL 鉴权:CDN 直接对请求进行鉴权。
远程鉴权:CDN 不对请求进行鉴权,而是转发请求并从鉴权服务器接收鉴权结果。
CDN 提供的一系列访问控制功能有不同的优先级。在 CDN 处理用户请求时,这些功能按优先级对请求生效。参见 访问控制功能的优先级。
登录 火山引擎内容分发网络控制台。
在左侧导航栏,点击 域名管理。
在 域名管理 页面,找到需要配置的域名,点击 管理。
在域名页面上,点击 访问控制 页签。
在页面右上方,点击 编辑配置。
在 远程鉴权 下方,设置 状态 为启用。
配置以下标签页上的设置。
配置完成后,在页面右上方,点击 提交编辑。
在该标签页上,您可以添加一个或者多个规则。您最多可以添加 50 个规则。当 CDN 收到一个用户请求时,会根据规则的出现顺序依次将规则与请求相匹配。如果一个规则匹配了请求,该请求就会进入远程鉴权的流程。
说明
如果您需要对所有请求进行鉴权,可以添加一条规则并指定以下配置:
配置 | 说明 |
---|---|
规则类型 | 规则的匹配条件。CDN 将匹配的请求发送到鉴权服务器进行认证。该配置有以下选项:
|
是否匹配 | 指定匹配的方式。该配置的选项如下:
需要留意的是,如果您添加了多条规则,这些规则需要设置为相同的匹配方式。 |
规则 | 表示规则的内容,长度不能超过 1,024 个字符,不能包含以下字符:
同时,
|
在该标签页上,您指定鉴权服务器的配置。
配置 | 说明 | 示例 |
---|---|---|
远程鉴权地址(主) | 表示鉴权服务器的主地址,长度不能超过 100 个字符。主地址必须采用以下格式之一:
<scheme> 的值是 |
|
远程鉴权地址(备) | 表示鉴权服务器的备地址,长度不能超过 100 个字符,格式和输入要求与主地址相同。 | |
请求路径 | 表示鉴权 URL 中的路径。鉴权服务器的地址和该路径组成了鉴权 URL。CDN 会把用户请求转发到该鉴权 URL。该配置的选项如下:
| |
鉴权路径 | 如果 请求路径 是 指定具体请求路径,该配置才会出现。在该配置中,您指定一个鉴权路径。鉴权路径必须以斜杠(/)开头,长度不能超过 100 个字符。鉴权路径可以包含除了以下字符的可打印 ASCII 字符:
|
|
请求方法 | 表示在发送鉴权请求时,CDN 所使用的请求方法。该配置的选项如下:
|
在该标签页上,您指定鉴权请求需要包含的参数。
配置 | 说明 |
---|---|
用户请求参数 | 表示哪些用户请求 URL 中的查询参数包含在鉴权请求中。该配置有以下选项:
|
参数清单 | 如果 用户请求参数 是 保留部分参数,该配置才会出现。该配置表示用户请求 URL 中的哪些查询参数需要包括在鉴权请求中。多个参数用分号 (;) 分隔,总长度不能超过 1,024 个字符。参数名称是大小写敏感的,可以包含除了以下字符以外的可打印 ASCII 字符:
|
添加鉴权请求参数 | 该配置表示您需要额外添加的查询参数。您最多可以添加 50 个参数。 |
请求参数名称 | 表示您需要添加的一个查询参数的名称。参数名称不能超过 1,024 个字符,可以包含除了以下字符的可打印 ASCII 字符:
|
取值方式 | 表示该查询参数的值是如何定义的。该配置有以下选项:
|
参数取值 | 表示该查询参数的值。该配置的说明如下:
|
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 |
在该标签页上,您指定鉴权请求需要包含的请求头。
配置 | 说明 |
---|---|
HOST 请求头 | 表示鉴权请求中 HOST 头部的值。该配置有以下选项:
|
用户其他请求头 | 表示哪些用户请求中的请求头包含在鉴权请求中。该配置有以下选项:
|
头部清单 | 如果 用户请求头 是 保留部分头部,该配置才会出现。该配置指定需要包含在鉴权请求中的请求头。多个请求头用分号 (;) 分隔。请求头是大小写不敏感的。 |
添加鉴权请求头 | 该配置表示您需要额外添加的请求头。您最多可以添加 50 个请求头。 |
请求头部名称 | 表示一个您需要添加的请求头。请求头是大小写不敏感的,不能是
|
取值方式 | 表示该请求头的值是如何定义的。该配置有以下选项:
|
参数取值 | 表示该请求头的值。该配置的说明如下:
|
在该标签页上,您指定 CDN 是如何处理鉴权服务器返回的鉴权结果的。
在截图所展示的配置中,缓存key 中指定的字段是 URI
和 client_ip
。该配置表示 CDN 基于用户请求的以下属性对鉴权结果进行缓存:
注意
在您设置缓存key 时, URL 字段是必须包含的,不然 CDN 无法判断鉴权结果所对应的请求文件。
这样,之后对于来自相同 IP 地址的请求,如果请求 URL 是相同的,CDN 会使用缓存的鉴权结果。
配置 | 说明 |
---|---|
鉴权成功状态码 | 表示从鉴权服务器返回的状态码中,哪些被认为是鉴权成功。默认值是 200。 |
鉴权失败状态码 | 表示从鉴权服务器返回的状态码中,哪些被认为是鉴权失败。默认值是 401。 |
其他状态码 | 该配置表示在满足以下所有条件时,CDN 对用户请求的处理方式。
该配置有以下选项:
|
鉴权结果缓存 | 表示 CDN 是否缓存鉴权结果,也就是鉴权服务器返回的鉴权状态码。您可以设置该配置为 开启 或者 关闭。默认是 关闭。 |
缓存时间 | 表示鉴权状态码的缓存时间,单位是秒。该配置仅在 鉴权结果缓存 为 开启 的情况下才出现。您可以输入范围在 1-86400 之间的一个值。86,400 秒表示 24 小时。 |
缓存key | 表示缓存的鉴权状态码中所包含的字段。这些字段是您在该配置中定义的。每个鉴权状态码都有一个唯一的缓存key。该配置仅在 鉴权结果缓存 为 开启 的情况下才出现。 注意 缓存key 中必须包含 URL 这个字段,不然 CDN 无法判断鉴权结果所对应的请求文件。 |
响应客户端拦截状态码 | 表示鉴权失败时,CDN 响应用户请求的状态码。默认的状态码是 403。 |
鉴权超时时间 | 表示鉴权请求的超时时间,单位是毫秒,默认值是 200。您可以输入的超时时间的范围是 200-3600。 |
异常执行策略 | 该配置表示鉴权异常发生时,CDN 处理用户请求的方式。
鉴权异常包括,但不限于,以下情况:
|