如何从早期版本的 PK 和服务器迁移
PlayReady 服务的推荐
Microsoft 建议使用以下迁移策略:
确保服务升级到最新版本的 PlayReady SDK。 这将跨新旧设备提供最佳兼容性。 最新版本的服务器 SDK 也增加了显著的性能和稳定性改进。 请注意,升级到最新的 PlayReady Server 4.0 不需要额外的许可或许可证费用 。
随着新设备继续将 PlayReady 迁移到硬件 (SoC) ,越来越多的设备会向服务报告为 PlayReady 3.0 及更高版本,以及 SL3000。 例如,所有Windows 10设备现在都报告为 PlayReady 3.0 及更高设备。 建议服务升级到最新版本的服务器 SDK,以保持兼容性,并利用一些新功能。
使用本主题中提供的信息作为指南来处理边缘案例,例如在支持新设备时按原样维护旧版许可证服务。
许可者可以联系 askdrm@microsoft.com 以获取反馈站点的访问权限,以提交迁移问题。
适用于 PlayReady 设备制造商的推荐
强烈建议 OEM 将其设备升级到 2017 年 10 月发布的 PK4.0,这是允许设备利用顶级媒体服务实现的最新功能的唯一版本。
优点 | 缺点 - 注意点 |
---|---|
可以支持 SL3000 | 与服务器 SDK 1.X 不兼容 |
可以实现 SecureStop、SecureDelete、MaxResDecode 等最新功能 | |
更好的代码库 | |
确保可以强制实施内容所有者请求的新许可证策略 |
OEM 升级计划
请联系你的服务,并确保它们全部迁移或添加服务器 SDK 2.0+ 版本。
验证其服务器 SDK 版本。
重申该服务的注意事项: Microsoft 没有额外的许可要求,也不收取额外费用 。
如果他们运行基于服务器 SDK v2.0+ 的许可证服务,则它们可能兼容。 下一部分中的服务 URL 和方案可以帮助进行兼容性测试。
如果他们运行服务器 SDK v1。基于 X 的许可证服务器,他们可以迁移其许可证服务器或为新客户端添加较新的许可证服务器 - 建议使用服务器 SDK 2.0+ (最新版本) 。
从 Microsoft 下载 PK 4.0。
通过电子邮件发送给 AskDRM@microsoft.comMicrosoft,从 Microsoft 合作伙伴或直接从 Microsoft 获取支持。
实现 PK 4.0 并发布产品。
服务迁移说明
为了获得最佳设备兼容性,请确保许可证服务器正在运行最新版本的服务器 SDK。 最新的服务器 SDK 将能够向所有 PlayReady 客户端提供许可证,而不考虑使用的移植工具包版本。 如果使用 3.0 或更高版本的设备移植工具包开发的客户端尝试使用 PlayReady SDK 1.x 从许可证服务获取许可证,则许可证服务将返回特定于泛型服务的 SOAP 错误。 服务器将记录Windows日志的异常,指出质询缺少客户端证书链。
将 PlayReady 服务迁移到服务器 SDK 4.0
服务升级通常不涉及任何代码更改,而只是重新编译和部署更新的库。 在某些情况下,由于一些弃用的 API,可能会有轻微的代码更改。 许可证处理程序库的重新编译和部署对于访问服务的设备应该是透明的。
编译和部署更新的许可证处理程序需要考虑以下事项:
项目需要删除对旧 PlayReady 库的引用,并在重新编译之前引用新库。
较新的服务器 SDK 需要 .NET 4.0 或更高版本。 从早期版本(如 1.52)升级许可证服务处理程序时,需要在项目属性中将目标框架更新为 4.0 或更高版本。
如果旧处理程序引用了面向低于 4.0 的 .NET 版本的其他库,则可能存在其他迁移步骤。 但是,.NET 库可以引用更小的版本,但通常没有任何问题。 有必要调查将引用的库重新编译到处理程序版本或获取第三方组件的库更新的机会。
只需在项目中引用 Microsoft.Media.Drm.RMCore。 部署解决方案时,需要在网站的 bin 目录中部署其他 DLL。 无需在项目中引用它们,与早期 SDK 的情况一样。
许可证服务使用 的应用程序池 至少需要 4.0 版 .NET CLR 版本。 如果许可证服务正在运行 2.0 或更早版本,则可能是在小于 4.0 的 .NET CLR 版本中运行。
最新的 PlayReady Server SDK 仅在Windows Server 2012及更高版本下受支持。 但是,Windows Server 2008 R2 不知道服务器 SDK 有任何问题。
支持服务的不同服务器 SDK 版本
Microsoft 建议在发布 SDK 后不久迁移到最新版本的 SDK。 但是,在某些情况下,服务可能需要运行服务器 SDK 的多个版本。 这可能是由于维护旧服务和存档服务和终结点而不容易更新的。 在这种情况下,服务可以将新客户端指向更新的许可证服务,同时使旧服务保持不变。 例如,服务在其生态系统中可能有多个旧设备运行使用 PlayReady PK 1.2 生成的客户端。 他们的新设备是使用 PlayReady PK 4.0 开发的。 新客户端需要指向使用服务器 SDK 2.0 或更高版本生成的许可证服务。 如果旧设备和新设备都使用相同的应用程序 ((例如基于 HTML 的应用平台) ),则需要将逻辑添加到应用程序以检测客户端的版本。 然后,客户端应用程序可以将许可证请求定向到较新的许可证服务。
建议的迁移是将许可证服务更新到最新版本的服务器 SDK。 这可以为许多服务提供跨所有设备的兼容性。 服务需要跨客户端进行测试,以验证兼容性。
如果服务不想对旧客户端和服务配置进行更改,建议托管已升级到最新版本 SDK 的第二个许可证服务,并由新式客户端使用。
如果服务在旧版设备上使用单个客户端应用程序, (PlayReady 1.X) 和较新的设备 (PlayReady 3.0 或更高版本) 则需要运行两个 PlayReady 许可证服务器, (PlayReady 1.X 和 PlayReady 3.0 或更高版本) 为所有这些设备提供许可证。 应用程序可能包括基于基础 PlayReady 客户端版本将请求路由到正确的许可证服务器的逻辑,或者服务可以使用服务代理将来自单个 URL 上的所有这些设备的请求路由到相应的许可证服务器。
可以通过检查许可证质询在代理中完成此操作。 PK 版本将在元素中记录。
该元素位于以下元素下的 SOAP 质询中:
<Challenge><LA><CLIENTINFO><CLIENTVERSION>3.1.0.1017</CLIENTVERSION>
使用旧版许可证服务支持基于 PK 3.0 或更高版本的客户端
使用 PlayReady 设备移植工具包 3.0 或更高版本开发的客户端设备可能适用于使用服务器 SDK 2.0 或更高版本开发的现有服务。 如上所述,服务需要测试 PK 3.0 或更高版本的客户端来验证兼容性。
如果设备具有 SL3000 证书,则通过许可证处理程序中的客户端证书公开的 SecurityLevel 将报告为 3000。 如果某些许可证处理程序正在寻找特定的 SecurityLevel 值来区分生产设备和测试设备,这可能会导致某些许可证处理程序出现问题。
SecurityLevels 之间的区别很常见,这些服务为测试设备提供有限的内容访问,以验证实时服务的播放许可证。 只有报告为 SecurityLevel 2000 的设备才会为商业内容提供播放许可证。 该服务将引发服务特定的异常,这会导致客户端出现 SOAP 错误。
在下面的示例中,SecurityLevel 正在客户端证书中检查,以确保它是生产设备。 由于它已硬编码为 2000,因此安全级别为 3000 的设备不会被视为生产设备。
下一个示例将检查安全级别更新为是否大于或等于 2000。 这将确保与 SL3000 设备兼容。
支持适用于服务的 PlayReady 3.X 及更高功能
除了新的硬件 DRM 安全级别外,PlayReady 3.0 及更高版本还引入了各种新功能。 为了利用这些新功能,服务需要首先确定客户端是否能够使用 PlayReady 3.0 和更高功能。 客户端证书类现在支持 GetSupportedFeatures 方法,该方法将返回一组功能,以帮助在处理程序中定义策略的逻辑。 如果客户端是使用 3.0 设备移植工具包开发的,它将在集合中具有 SupportedFeature.PlayReady3Features 属性。 集合中还有其他有用的功能,例如客户端是使用安全时钟还是反回滚时钟。
下面是如何检测设备是否为 PlayReady 3.0 客户端的示例。
检测到处理程序后,可以添加安全停止、实时许可证过期和 MaxResDecode 等策略。
在服务中支持 SL2000 和 SL3000
PlayReady 引入了新的安全级别 SL3000,这些安全级别由符合 PlayReady 硬件安全级别的设备报告,这些安全级别符合合规性和可靠性规则中定义的受信任执行环境中运行。 服务通常会将某些客户端报告为 SL2000,而其他客户端则报告为 SL3000。 例如,在Windows中,升级到Windows 10的较旧设备可能会报告为 SL2000。 新的Windows 10设备将报告为 SL3000,其中 DRM 已纳入较新的芯片。
下面是基于来自客户端质询的报告安全级别提供不同策略的服务示例:
服务将确定基于软件的 DRM 客户端与基于硬件的 DRM 客户端之间的策略应如何不同。 这些策略可能由工作室要求驱动。 例如,工作室将来可能需要超高清或 4K 内容仅限于支持基于硬件的 PlayReady DRM 的设备。
可以通过几种不同的方式实现围绕解决方法的 PlayReady 3.0 和更高策略。 一种方法是将 SL2000 许可证的 MaxResDecode 策略设置为内容所有者提供的允许限制。 SL3000 设备不会获得此策略限制。 另一种适用于自适应流式处理技术的选项是在保护各种分辨率时使用不同的 KeyID。 检测安全级别时,服务只能为基于软件的客户端允许的解决方案提供许可证。 报告 SL3000 安全级别的客户端将获得所有分辨率的播放许可证。 PlayReady 引入了一个新的 DRM 标头 (v4.2.0.0 和更高) ,通过启用架构中的多个 KeyID 来支持后一种方案。