使用凭据缓存

媒体基础提供 IMFNetCredentialCache 接口的默认实现。 实现 IMFNetCredentialManager 接口的应用程序可以使用默认凭据缓存对象来存储用户的凭据。

若要创建默认凭据缓存对象,请调用 MFCreateCredentialCache 函数。

HRESULT hr = S_OK;
IMFNetCredentialCache *pCredentialCache = NULL;
hr = MFCreateCredentialCache(&pCredentialCache);

创建凭据缓存后,应用程序可以使用以下方法来获取凭据对象、设置用户凭据并指定缓存选项。

  • 若要获取 URL 的凭据对象,请调用 IMFNetCredentialCache::GetCredential

    hr = pCredentialCache-> GetCredential(
            pszUrl,
            pszRealm,
            dwAuthenticationFlags,
            &pCredential,
            &dwRequirementsFlags);
    

    如果凭据缓存中不存在指定 URL 的凭据, 则 GetCredential 会创建一个具有空用户名和密码值的新凭据对象。

  • 若要在凭据对象上设置用户名和密码,请调用 IMFNetCredential::SetUserIMFNetCredential::SetPassword

  • 若要在凭据对象上设置缓存选项,请调用 IMFNetCredentialCache::SetUserOptions

    hr = pCredentialCache-> SetUserOptions( 
            pCredentialCache,
            MFNET_CREDENTIAL_SAVE);
    

    dwOptionsFlags 参数值在 MFNetCredentialOptions 枚举中定义。 若要将 URL 的用户凭据保存在永久性存储中,请设置MFNET_CREDENTIAL_SAVE标志。 如果 SetUserOptions 调用成功完成,则对 GetCredential 的 后续调用将在永久性存储中搜索凭据。 如果找到匹配项,此方法将返回指向包含信息的凭据对象的指针。

    默认情况下,通过网络发送的用户凭据是加密的。 若要将此更改为明文,请设置MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT标志。

    若要从注册表中删除信息,请调用 GetCredential 以获取凭据对象,然后调用 SetUserOption并将 dwOptionsFlags 设置为 MFNET_CREDENTIAL_DONT_CACHE。

网络源身份验证