阿里云鉴权A算法详解和示例源码

阿里云鉴权A算法详解和示例源码


一、什么是鉴权?

URL鉴权功能主要用于保护用户站点资源不被非法站点下载盗用,阿里云CDN为您提供了三种鉴权方式,本文为您详细介绍鉴权方式A的原理和示例说明。

二、阿里云鉴权A参数

参数描述

要配置出正确的鉴权,需要明确以下几个参数:

推流地址

完整的推流地址,形如:rtmp://video-center.alivecdn.com/{AppName}/{StreamName}?vhost={yourdomain}

鉴权类型

阿里云CDN 兼容并支持A、B、C三种鉴权方式,具体见URL鉴权方式。这里选择的是A类型

鉴权KEY

privatekey字段用户可以自行设置

时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

有效时间

以秒为单位的整数时间,用来控制推流时效

原理说明
访问加密URL构成:
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash

鉴权字段描述如下表所示。

字段 描述
DomainName CDN站点的域名。
Filename 实际回源访问的URL,鉴权时Filename需以正斜线(/)开头。
auth_key 您设定的鉴权密钥。
timestamp 失效时间,整型正数,固定长度10,值为1970年1月1日以来的当前时间秒数+过期时间秒数。用来控制失效时间,过期时间由客户端设置,若设置为1800s,您访问CDN的时间超过1800s后,该鉴权失效。例如,您设置访问时间为2020-08-15 15:00:00,则链接的真正失效时间为2020-08-15 15:30:00。
rand 随机数。建议使用UUID,不能包含中划线(-),例如:477b3bbc253f467b8def6711128c7bec。
uid 用户ID,暂未使用(设置成0即可)。
md5hash 通过md5算法计算出的字符串,由数字0-9和小写英文字母a-z混合组成,固定长度32。

CDN服务器接到资源访问请求后,判断最终生成鉴权URL请求中的timestamp+鉴权key的有效时间是否小于当前时间。

如果timestamp+鉴权key的有效时间小于当前时间,服务器判定过期失效,并返回HTTP 403错误。
如果timestamp+鉴权key的有效时间大于当前时间,构造出一个同样的字符串,参考下方sstring字符串,然后使用MD5算法算出HashValue的值,再与请求中md5hash的值进行比对。
结果一致,鉴权通过,返回资源请求。
结果不一致,鉴权失败,返回HTTP 403错误。

HashValue的值是通过以下字符串计算得到的。
sstring = “URI-Timestamp-rand-uid-PrivateKey”(URI是用户的请求对象相对地址,不包含参数,如/Filename)
HashValue = md5sum(sstring)

三、源码示例

using System;
using System.Security.Cryptography;
using System.Text
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值