更新时间:2024-10-18 GMT+08:00

配置远程鉴权

华为云CDN支持远程鉴权功能,即:当用户向CDN节点请求资源时,CDN将用户请求转发到您指定的鉴权服务器,CDN根据鉴权服务器返回的结果判断是否给用户返回资源。

背景信息

远程鉴权功能类似URL鉴权,区别如下:

  • URL鉴权:鉴权由CDN节点完成。
  • 远程鉴权:CDN节点转发用户请求到您指定的鉴权服务器,由鉴权服务器完成鉴权功能。

远程鉴权用户请求流程如下:

图1 远程鉴权流程
表1 步骤说明

步骤

说明

用户携带鉴权参数访问CDN节点。

CDN将用户请求转发至远程鉴权服务器。

远程鉴权服务器完成鉴权操作,给CDN节点返回响应状态码。

CDN节点根据接收到的状态码判断是否给用户返回所请求的资源。

注意事项

  • 远程鉴权功能默认关闭。
  • 后台有特殊配置的域名,暂不支持使用远程鉴权功能。

操作步骤

  1. 登录华为云控制台,在控制台首页中选择“CDN与智能边缘 > 内容分发网络 CDN”,进入CDN控制台。
  2. 在左侧菜单栏中,选择域名管理
  3. 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
  4. 选择“访问控制”页签,单击“远程鉴权配置”后的“编辑”,进入配置弹窗。
    图2 配置远程鉴权
    表2 参数说明

    参数

    说明

    示例

    鉴权服务器地址

    可访问的服务器地址。

    • 输入的URL必须带有“http”或“https”。
    • 不能是localhost或127.0.0.1这类本地地址。
    • 不能是CDN的加速域名。
    • 远程鉴权服务器默认为80/443端口,如需修改,请提交工单申请。

    https://example.com/auth

    请求方法

    鉴权服务器支持的请求方法,支持GET、POST、HEAD。

    GET

    鉴权文件类型

    • 所有文件类型:所有文件均参与鉴权。
    • 指定文件后缀:指定类型的文件参与鉴权,多个后缀用“|”分隔,示例:jpg|MP4。
      • 支持数字0-9、字符a-z、A-Z,且字符总数不超过512。
    • 文件类型不区分大小写,即:jpg和JPG代表同一种文件类型。

    所有文件类型

    保留参数设置

    设置用户请求中需要参与鉴权的参数,可选保留所有URL参数、忽略所有URL参数、保留指定URL参数。

    • 参数填写规范:不区分大小写,多个参数用“|”分隔。

    保留所有URL参数

    自定义URL参数

    设置CDN节点转发用户请求到远程鉴权服务器时需添加的参数。您可以选择预设参数或自定义参数(参数值不区分大小写)。

    • 自定义:不支持变量,采用字符串形式下发。
    • 选择参数:选择预设的参数或自定义参数,取值支持配置变量。

    选择参数:http_host

    取值:$http_host

    保留请求头设置

    设置用户请求中参与鉴权请求头,可选保留所有请求头参数、保留指定请求头参数、忽略所有请求头参数。

    参数填写规范:不区分大小写,多个参数用“|”分隔。

    保留所有请求头参数

    自定义请求头参数

    设置CDN节点转发用户请求到远程鉴权服务器时需要添加的请求头,可以选择系统预设的请求头,也可以自定义请求头(参数值不区分大小写)。

    • 自定义:不支持变量,采用字符串形式下发。
    • 选择参数:选择预设的参数或自定义参数,取值支持配置预设变量。

    选择参数:http_referer

    取值:$http_referer

    鉴权成功状态码

    设置鉴权成功时远程鉴权服务器返回给CDN节点的状态码。

    • 取值范围:2xx/3xx。

    200

    鉴权失败状态码

    设置鉴权失败时远程鉴权服务器返回给CDN节点的状态码。

    • 取值范围:4xx/5xx。

    403

    响应自定义状态码

    设置鉴权失败时CDN节点返回给用户的状态码。

    • 取值范围:2xx/3xx/4xx/5xx。

    403

    鉴权超时时间

    设置从CDN转发鉴权请求开始,到CDN节点收到远程鉴权服务器返回的结果为止的时间。单位为毫秒,值为0或50~3000。

    60

    鉴权超时之后的动作

    设置鉴权超时后,CDN节点如何处理用户请求。

    • 通过:鉴权超时后允许用户请求,返回对应的资源。
    • 拒绝:鉴权超时后拒绝用户请求,返回配置的响应自定义状态码给用户。

    拒绝

    表3 预设参数

    变量名

    变量含义

    说明

    $http_host

    请求头中的Host值。

    只有客户端请求携带这些值时才可以获取到。

    $http_user_agent

    请求头中的User-Agent值。

    $http_referer

    请求头中的Referer值。

    $http_x_forwarded_for

    请求头中的X-Forwarded-For值。

    $http_content_type

    请求头中的Content-Type值。

    $remote_addr

    请求的Client IP信息。

    -

    $scheme

    请求的协议类型。

    -

    $server_protocol

    请求的协议版本。

    -

    $request_uri

    uri+'?'+args的内容。

    -

    $uri

    请求的原始URI。

    -

    $args

    请求的query string,不包含'?'。

    -

    $request_method

    请求方法。

    -

  5. 根据参数提示填写相关参数,单击“确定”完成配置。
  6. (可选)关闭远程鉴权配置。
    • 关闭“状态”开关即可关闭远程鉴权配置,此时所有配置将被清空,下次启用远程鉴权功能时需要重新配置相关参数。

配置示例

域名example.com开启了远程鉴权,配置请见图3

  • 客户端原始请求URL:https://example.com/folder01/test.txt?key=***,原始请求中携带Header:test=123。
  • CDN转发给远程鉴权服务器的URL为:GET https://192.168.9.1/remoteauth?key=***,CDN转发给远程鉴权服务器的请求包含header:test=123。
  • 可能的鉴权结果:
    • 结果1:鉴权成功,CDN节点与用户开始正常的缓存数据访问交互。
    • 结果2:鉴权失败,CDN节点返回403状态码给用户。
    • 结果3:鉴权超时,CDN节点执行鉴权超时动作,放行用户请求。
图3 远程鉴权