DRM-X 6.0 鸽子和橄榄枝标志DRM-X 6.0文档
◎ 简体中文

Node.js + Express 视频 DRM 集成

通过已认证路由、可信内容映射、同源检查及已测试的权限撤销机制,为 Express 接入 DRM-X 6.0 加密视频。

查看 Markdown在线示例更新于 2026-09-21

播放授权的流程

您的后端决定谁可以观看。DRM-X 提供播放授权,播放器使用该授权请求 DRM 许可证。

  1. 观看用户

    登录您的服务并请求播放视频。

  2. 您的后端

    检查用户的购买记录、订阅状态或其他观看权限。

  3. DRM-X

    应用所选播放规则,返回播放配置和授权信息。

  4. 播放器

    使用返回的授权信息,请求播放所需的 DRM 许可证。

您的后端判断用户是否有权观看,DRM-X 执行签名授权中的播放策略。加密媒体与 DRM 许可证通过各自的服务传送给播放器。

开始之前#

先在 DRM-X 6.0 中发布加密视频并复制 Content ID,再创建具有 license-tokens:create 权限的服务器集成凭据。Site ID、Site Key 和 Access Key 保存在服务器配置中,浏览器只接收短期播放授权数据。

学习网站应使用 HTTPS。HTTP localhost 仅适合同一台电脑上的测试,HTTP 局域网地址不具备浏览器 DRM 所需的安全上下文。请使用受支持的浏览器和实际内容进行验证。

安装并挂载 Express 路由#

解压 Node.js + Express 源码 ZIP,保留相邻的 express 与 node 目录。使用 Node.js 24 或更高版本,在 express 目录运行 pnpm install --frozen-lockfile,再运行 pnpm test。本版本固定使用 Express 5.1.0。

从 express/router.mjs 导入 createDrmxRouter,将其挂载在现有会话与身份认证中间件之后。配置 publicOrigin、instanceId 和服务器凭据。identity 回调读取已认证用户,authorize 在每次页面或会话请求时查询数据库。

下载 Node.js + Express 源码

app.use("/drmx", createDrmxRouter({
  publicOrigin: "https://learning.example.com",
  instanceId: process.env.DRMX_INSTANCE_ID,
  credentials: {
    siteId: process.env.DRMX_SITE_ID,
    siteKey: process.env.DRMX_SITE_KEY,
    accessKey: process.env.DRMX_ACCESS_KEY
  },
  identity: req => req.user?.id,
  authorize: (userId, videoId) => yourRepository.authorizedVideo(userId, videoId)
}));

配置内容并嵌入播放器#

已授权数据库记录提供 enabled、title、contentId、contentType 和 policy。未付款、已到期、已停用或已撤销时返回 null。登录后打开 /drmx/videos/VIDEO_ID 即可显示嵌入播放器,其 POST 接口为 /drmx/videos/VIDEO_ID/session。浏览器不能选择用户身份或降低已保存的保护策略。

使用安全会话 Cookie 和准确配置的 HTTPS publicOrigin。会话 POST 请求必须使用 JSON 且 Origin 相同,以防止跨站提交使用 Cookie 认证的请求。两个路由都应排除共享缓存,不要添加宽松的 CORS。测试套件中的 X-Test-User 请求头仅供测试,绝不能作为正式登录方式。

验证权限变化#

已通过 8 项真实 Express HTTP 路由测试,覆盖身份认证、来源检查、格式错误与超大输入、内容绑定、服务器控制的身份与策略、播放器 HTML 转义和权限撤销。上游 DRM-X 响应使用模拟数据。上线前请验证实际登录中间件、数据库规则、部署代理和加密播放。

集成源码下载 · Universal Player Web 指南 · 授权策略 · 教育视频 DRM 保护 · Multi-DRM 保护