首页 > 资源分享 > 阿里云获取CNS的鉴权URL地址(鉴权类型 是A方式)

阿里云获取CNS的鉴权URL地址(鉴权类型 是A方式)

时间:2025-07-02浏览次数:6

1. 准备工作

  • 配置阿里云CDN:在阿里云CDN控制台中,开启URL鉴权功能,并设置鉴权类型为A方式,同时记录下配置的主KEY。

  • 安装依赖:如果需要使用第三方库来生成鉴权URL,可以通过Composer安装相关依赖,例如big-dream/cdn-url-auth。

2. 生成鉴权URL的代码实现

在ThinkPHP5.0项目中,可以通过以下代码生成阿里云CDN的鉴权URL(A方式):

use think\Controller;

class CdnController extends Controller
{
    public function generateAuthUrl()
    {
        // 阿里云CDN配置信息
        $domainName = 'your.cdn.domain.com'; // CDN加速域名
        $privateKey = 'yourPrivateKey'; // 鉴权密钥
        $filename = '/path/to/default.zip'; // 文件路径
        $timestamp = time(); // 当前时间戳
        $rand = md5(microtime()); // 随机数
        $uid = '0'; // 用户ID,暂未使用,设置为0

        // 构造签名字符串
        $signString = $filename . '-' . $timestamp . '-' . $rand . '-' . $uid . '-' . $privateKey;
        $md5Hash = md5($signString); // 计算MD5哈希值

        // 拼接鉴权URL
        $authUrl = "http://{$domainName}{$filename}?auth_key={$timestamp}-{$rand}-{$uid}-{$md5Hash}";

        // 返回鉴权URL
        return json(['auth_url' => $authUrl]);
    }
}

3. 使用第三方库生成鉴权URL

如果使用 big-dream/cdn-url-auth库,可以通过以下代码生成鉴权URL:

use think\Controller;
use bigDream\CdnUrlAuth\Aliyun;

class CdnController extends Controller
{
    public function generateAuthUrl()
    {
        // 初始化阿里云CDN鉴权类
        $auth = new Aliyun(
            'yourPrivateKey', // 鉴权密钥
            'auth_key', // 鉴权参数名
            3600 // 链接有效期(秒)
        );

        // 生成鉴权URL(A方式)
        $filename = '/path/to/default.zip'; // 文件路径
        $timestamp = time(); // 当前时间戳
        $rand = md5(microtime()); // 随机数
        $uid = '0'; // 用户ID,暂未使用,设置为0
        $authUrl = $auth->typeA($filename, $timestamp, $rand, $uid);

        // 返回鉴权URL
        return json(['auth_url' => $authUrl]);
    }
}

在阿里云CDN中,鉴权URL的有效期并不是在生成URL的代码中直接设置的,而是通过CDN控制台配置的鉴权URL有效时长来控制的。在生成鉴权URL的代码中,时间戳 timestamp 是根据当前时间生成的,它与CDN控制台中配置的鉴权URL有效时长共同决定了鉴权URL的失效时间。

以下是修改后的代码,其中 $timestamp 是当前时间戳, $expireTime 是鉴权URL的有效期(单位为秒),这个有效期应该与CDN控制台中配置的鉴权URL有效时长相匹配:

use think\Controller;

class CdnController extends Controller
{
    public function generateAuthUrl()
    {
        // 阿里云CDN配置信息
        $domainName = 'your.cdn.domain.com'; // CDN加速域名
        $privateKey = 'yourPrivateKey'; // 鉴权密钥
        $filename = '/path/to/default.zip'; // 文件路径
        $timestamp = time(); // 当前时间戳
        $expireTime = 3600; // 鉴权URL的有效期(单位为秒),应与CDN控制台配置一致
        $rand = md5(microtime()); // 随机数
        $uid = '0'; // 用户ID,暂未使用,设置为0

        // 构造签名字符串
        $signString = $filename . '-' . $timestamp . '-' . $rand . '-' . $uid . '-' . $privateKey;
        $md5Hash = md5($signString); // 计算MD5哈希值

        // 拼接鉴权URL
        $authUrl = "http://{$domainName}{$filename}?auth_key={$timestamp}-{$rand}-{$uid}-{$md5Hash}";

        // 返回鉴权URL
        return json(['auth_url' => $authUrl]);
    }
}

在CDN控制台中配置鉴权URL有效时长的步骤如下:

  1. 登录CDN控制台。

  2. 在左侧导航栏,单击 域名管理

  3. 域名管理 页面,找到目标域名,单击 操作 列的 管理

  4. 在指定域名的左侧导航栏,单击 访问控制

  5. 单击 URL鉴权 页签。

  6. 鉴权URL设置 区域,单击 修改配置

  7. 鉴权URL有效时长 中设置URL鉴权的有效时长,单位为秒。

  8. 单击 确定

通过以上步骤,你可以确保生成的鉴权URL具有正确的有效期。