# 许可证授权概述

后端确认用户有权观看后，使用 Playback Session API 请求播放授权。选择播放规则、接入播放器，并在播放结束时释放对应会话。

播放授权的流程

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

- 01**观看用户**

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

- 02**您的后端**

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

- 03**DRM-X**

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

- 04**播放器**

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

您的后端决定访问; DRM-X 执行已签名的政策。 加密的媒体和DRM 许可证会遵循不同的传送路径 。

## 创建播放会话[#](#create-a-playback-session)

```
POST https://api6.drm-x.com/api/v1/playback/environments/{siteId}/sessions
Accept: application/json
Content-Type: application/json
X-DRMX-Client-Id: {siteKey}
X-DRMX-Client-Secret: {accessKey}
```

```
{
  "contentId": "course-12-lesson-4",
  "contentType": "vod",
  "drmSystem": "widevine",
  "subject": "customer-user-1001",
  "sessionId": "new-unpredictable-id-per-playback",
  "playbackMode": "streaming",
  "licensePolicyTemplate": "multi-tier-standard",
  "useEnvironmentDefaults": true,
  "applicationId": "customer-web"
}
```

除检测到的客户端能力外，请求参数都应来自可信的服务端数据。客户端能力也必须通过允许列表校验。观看权限、播放策略和 URL 应由后端确定，不能直接采用客户端提交的值。



## 选择策略模板[#](#choose-a-named-policy-template)

| 模板 | 适用场景 | 
| --- | --- |

| `single-software` | 适用于使用单一密钥、优先兼容软件解密环境的内容。 | 

| `single-hdcp` | 适用于使用单一密钥、同时要求兼容设备启用数字输出保护的内容。 | 

| `single-hardware` | 适用于使用单一密钥、要求在具备相应硬件安全能力的设备上播放的高价值内容。 | 

| `multi-tier-standard` | 适用于使用多个密钥、需要分别设置 AUDIO、SD、HD 和 UHD 规则的内容。 | 

使用自定义规则时，由服务器提交完整且经确认的 DRM-X License Policy JSON v2。`licensePolicyTemplate` 和 `licensePolicy` 只能选择其中一个，不能同时提交。



## 选择 direct-token 或客户自建代理[#](#direct-token-or-customer-proxy)

### Direct-token

接入步骤较少。客户端接收有效期较短的 DRM License Token，仅在请求接口返回的许可证或 FairPlay 证书地址时携带该 Token。

### Token-proxy

您的服务器将实际 Token 保存在有容量限制和过期时间的缓存中，向客户端返回不可解析的引用标识及由您控制的代理 URL。该标识必须绑定用户、Content ID、DRM 系统和有效期。



## 处理播放结束与会话释放[#](#complete-the-lifecycle)

- 返回会话响应时设置 `Cache-Control: no-store`。
- 转发原生 DRM challenge 和响应时，必须保持二进制正文逐字节不变。
- 拒绝重定向，并限制证书、许可证和日志请求的大小。
- 停止播放、切换内容、出现无法恢复的错误或关闭应用时，调用响应中提供的会话释放接口。
- 不要在日志中记录授权请求头、成功的会话响应正文、许可证二进制内容、DRM challenge 或内容密钥。

<!-- Canonical: https://docs.drm-x.com/zh-Hans/license-service/overview -->
<!-- Language: zh-Hans -->
