使用 DRMManager 类

Flash Player 10.1 和更高版本,Adobe AIR 1.5 和更高版本

使用 DRMManager 类管理应用程序中的凭证和媒体权限服务器会话。

凭证管理(仅限 AIR)

只要用户播放保护的内容,运行时就会获取并缓存查看内容所需的许可证。如果应用程序在本地保存文件,并且许可证允许脱机播放,则用户可以查看 AIR 应用程序中的内容。即使与媒体权限服务器的连接不可用,仍可进行此类本地脱机播放。使用 DRMManager 和 NetStream preloadEmbeddedMetadata() 方法,您可以预缓存凭证。应用程序不必获取查看内容所需的许可证。例如,应用程序可以下载媒体文件,然后在用户仍联机时获取凭证。

若要预加载凭证,请使用 NetStream preloadEmbeddedMetadata() 方法获取 DRMContentData 对象。DRMContentData 对象包含可以提供许可证的媒体权限服务器的 URL 和域,并介绍是否需要对用户进行身份验证。借助此信息,可以调用 DRMManager loadVoucher() 方法来获取和缓存凭证。预加载用于脱机播放的凭证中更详细地介绍了预加载凭证所采用的工作流程。

会话管理

还可以使用 DRMManager 验证用户对媒体权限服务器的身份以及管理持久性会话。

调用 DRMManager authenticate() 方法与媒体权限服务器建立会话。成功完成身份验证后,DRMManager 将调度 DRMAuthenticationCompleteEvent 对象。此对象包含会话令牌。可以保存此令牌供将来建立会话,以使用户不必提供其帐户凭据。将令牌传递给 setAuthenticationToken() 方法以建立通过身份验证的新会话。(生成令牌的服务器的设置决定令牌的有效期限和其他属性。AIR 应用程序代码不应解释令牌数据结构,因为该结构在以后的 AIR 更新中可能会发生变化。)

可以将身份验证令牌转移到其他计算机。若要保护令牌,可以将其存储在 AIR 加密本地存储区中。有关详细信息,请参阅加密的本地存储区

DRMStatus 事件

成功完成调用 loadVoucher() 方法后,DRMManager 将调度 DRMStatusEvent 对象。

如果获取了凭证,则事件对象的 detail 属性(仅限 AIR)的值将为“DRM.voucherObtained”,并且 voucher 属性包含 DRMVoucher 对象。

如果未获取凭证,则 detail 属性(仅限 AIR)的值仍为“DRM.voucherObtained”,但是 voucher 属性为 null。例如,如果使用 localOnly 的 LoadVoucherSetting,并且没有本地缓存的凭证,则无法获取凭证。

如果 loadVoucher() 调用未成功完成(可能由于身份验证或通信错误),则 DRMManager 改为调度 DRMErrorEvent 或 DRMAuthenticationErrorEvent 对象。

DRMAuthenticationComplete 事件

通过调用 authenticate() 方法成功验证用户的身份后,DRMManager 将调度 DRMAuthenticationCompleteEvent 对象。

DRMAuthenticationCompleteEvent 对象包含一个可重用的令牌,该令牌可用于在应用程序会话中保持用户的身份验证。将此标记传递给 DRMManager setAuthenticationToken() 方法以重新建立会话。(令牌创建者设置有效期限等令牌属性。Adobe 不提供用于检查标记属性的 API。)

DRMAuthenticationError 事件

用户无法通过调用 authenticate()setAuthenticationToken() 方法成功验证用户的身份时,DRMManager 将调度 DRMAuthenticationErrorEvent 对象。