配置远程鉴权
华为云CDN支持远程鉴权功能,即:当用户向CDN节点请求资源时,CDN将用户请求转发到您指定的鉴权服务器,CDN根据鉴权服务器返回的结果判断是否给用户返回资源。
背景信息
远程鉴权功能类似URL鉴权,区别如下:
- URL鉴权:鉴权由CDN节点完成。
- 远程鉴权:CDN节点转发用户请求到您指定的鉴权服务器,由鉴权服务器完成鉴权功能。
远程鉴权用户请求流程如下:
步骤 |
说明 |
---|---|
① |
用户携带鉴权参数访问CDN节点。 |
② |
CDN将用户请求转发至远程鉴权服务器。 |
③ |
远程鉴权服务器完成鉴权操作,给CDN节点返回响应状态码。 |
④ |
CDN节点根据接收到的状态码判断是否给用户返回所请求的资源。 |
注意事项
- 远程鉴权功能默认关闭。
- 后台有特殊配置的域名,暂不支持使用远程鉴权功能。
操作步骤
- 登录华为云控制台,在控制台首页中选择“CDN与智能边缘 > 内容分发网络 CDN”,进入CDN控制台。
- 在左侧菜单栏中,选择 。
- 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
- 选择“访问控制”页签,单击“远程鉴权配置”后的“编辑”,进入配置弹窗。
图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
请求方法。
-
- 根据参数提示填写相关参数,单击“确定”完成配置。
- (可选)关闭远程鉴权配置。
- 关闭“状态”开关即可关闭远程鉴权配置,此时所有配置将被清空,下次启用远程鉴权功能时需要重新配置相关参数。
配置示例
域名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节点执行鉴权超时动作,放行用户请求。