Windows Media Format 11 SDK) (身份验证
读取器对象可以处理网络身份验证质询,包括摘要身份验证和 NTLM 身份验证。 在某些情况下,应用程序必须通过回调接口提供用户的凭据:
摘要式身份验证:应用程序必须实现 IWMCredentialCallback 接口,如本主题后面部分所述。
NTLM 身份验证:读取器使用用户的登录凭据自动响应。 如果当前用户有权登录到服务器,则应用程序无需执行任何操作。 如果用户没有授权,应用程序必须实现 IWMCredentialCallback 接口。
注意
Windows Media 服务版本 4.1 不支持通过代理服务器进行 NTLM 身份验证。 NTLM 身份验证要求在同一连接上进行多个客户端-服务器交换,并且版本 4.1 不与代理保持持久连接。 Microsoft Windows Server 2003 中的 Windows Media 服务 9 系列支持通过代理服务器进行 NTLM 身份验证,只要代理支持保持连接。
如前所述,在某些情况下,应用程序必须提供用户的凭据。 这通过 IWMCredentialCallback 接口发生,该接口具有单个方法 AcquireCredentials。 若要支持身份验证,请在应用程序中实现此接口。 读取器对象通过在 IWMReader::Open 方法中从应用程序收到的 IWMReaderCallback 指针上调用 QueryInterface 来查询此接口。 如果读取器对象需要获取用户的凭据,它将调用应用程序的 AcquireCredentials 方法。
如果在不加密的情况下通过网络发送凭据,则读取器会在 pdwFlags 参数中设置WMT_CREDENTIAL_CLEAR_TEXT标志。 这样,应用程序就有机会警告用户其凭据将以纯文本形式发送。
否则,读取器对象会在通过网络发送凭据之前自动加密凭据。 应用程序可以将它们以纯文本形式返回到读取器对象。 此外,如果读取器对象设置WMT_CREDENTIAL_ENCRYPT标志,则表示读取器支持从应用程序获取加密凭据。 在这种情况下,应用程序可以以纯文本形式返回凭据,也可以使用平台 SDK 文档中介绍的 CryptProtectData 函数自行加密凭据。 如果应用程序加密凭据,则必须在方法返回之前在 pdwFlags 参数中设置WMT_CREDENTIAL_ENCRYPT标志。
通常,不需要加密数据,因为读取器对象会在必要时加密数据。 但是,如果应用程序将用户名和密码保留在内存中,加密可能会很有用,因为它可以防止攻击者检查进程的内存转储。
相关主题