# Canvas、Blackboard、Brightspace 与 Open edX

使用 LTI 1.3 集成服务，通过 LMS 签名的启动请求打开受保护视频。

播放授权的流程

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

- 01**观看用户**

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

- 02**您的后端**

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

- 03**DRM-X**

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

- 04**播放器**

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

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

## 部署 LTI 集成服务[#](#deploy)



在 HTTPS 反向代理后运行 Node.js 24 集成服务。将配置和 SQLite 状态数据库放在网站公开目录之外，并在主机环境中设置 DRMX_BRIDGE_CONFIG、DRMX_BRIDGE_DATABASE、DRMX_SITE_ID、DRMX_SITE_KEY 和 DRMX_ACCESS_KEY。



当前服务实现了 LTI 1.3 Resource Link 启动流程，尚未实现成绩回传、名单同步或 Deep Linking 选课界面。请在 LMS 中添加资源链接，并在服务器配置中映射其签名启动请求中的资源链接 ID。



[下载第三方平台集成源码](https://drm-x6-cdn.1aicloud.com/drmx-frameworks-1.3.0-preview.2-f4ee10f26cdf.zip)





## 注册工具[#](#register)



将 OIDC 登录地址设为 https://YOUR-TOOL/lti/login，将启动和重定向地址设为 https://YOUR-TOOL/lti/launch。把 LMS 的 issuer、client ID、deployment ID、授权地址和公开 JWKS 地址填写到 config.example.json 中。不要使用未注册启动请求提供的配置值。



Canvas：创建并启用 LTI 开发者密钥，然后在指定账号或课程中按 client ID 安装工具。Blackboard Learn：注册 LTI 1.3 provider 和 placement，再复制部署信息。Brightspace：注册工具，将其部署到指定组织单元，然后创建链接。



Open edX：启用并配置支持 LTI 1.3 的 LTI Consumer 组件，然后将外部工具加入课程。这会复用相同的签名启动流程，无需在 Studio 中使用另一个保存 DRM-X 凭据的 XBlock。





## 映射资源并设置策略[#](#mapping)



在 resources 中创建记录，填写标题、Content ID、内容类型和策略，并设置 provider=lti、enabled=true。在已注册平台的 resources 中，将 LMS 资源链接 ID 映射到该记录。未映射的启动请求会被拒绝；已通过签名验证的启动用户可看到资源 ID，供管理员配置。



集成服务会验证签名、issuer、audience、部署、nonce、有效期、消息类型、目标地址和课程角色。启动状态只能使用一次。播放器获得短时有效的会话标识，DRM-X 凭据保留在服务器端。





## 兼容性验证与权限变更[#](#limits)



本地测试使用真实 RSA 签名的启动令牌，并验证错误声明会被拒绝。仍需在 Canvas、Blackboard、Brightspace 和 Open edX 的实际租户中完成验收。请勿将此预览版本描述为已获得 LTI Advantage 认证。



集成服务的会话标识在 15 分钟后到期。在此期间，服务不会再次调用 LMS 检查报名状态。因此，移除学员后，已签发的会话标识可能仍可使用，直至到期；已签发 DRM 许可证则遵循自身策略规定的有效期。重新打开课时可发起新的启动验证。



[Canvas LTI 文档](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro)



[Brightspace 工具注册](https://community.d2l.com/brightspace/kb/articles/23662-tool-registration-deployment-and-links)

<!-- Canonical: https://docs.drm-x.com/zh-Hans/integrations/lti-platforms -->
<!-- Language: zh-Hans -->
