Usando o Cache de Credenciais

O Media Foundation fornece uma implementação padrão da interface IMFNetCredentialCache . Um aplicativo que implementa a interface IMFNetCredentialManager pode usar o objeto de cache de credencial padrão para armazenar as credenciais do usuário.

Para criar o objeto de cache de credencial padrão, chame a função MFCreateCredentialCache .

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

Depois que o cache de credenciais for criado, o aplicativo poderá usar os métodos a seguir para obter um objeto de credencial, definir credenciais de usuário e especificar as opções de cache.

  • Para obter o objeto de credencial de uma URL, chame IMFNetCredentialCache::GetCredential.

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

    Se as credenciais da URL especificada não existirem no cache de credenciais, GetCredential criará um novo objeto de credencial com valores vazios de nome de usuário e senha.

  • Para definir o nome de usuário e a senha no objeto de credencial, chame IMFNetCredential::SetUser e IMFNetCredential::SetPassword.

  • Para definir as opções de cache no objeto de credencial, chame IMFNetCredentialCache::SetUserOptions.

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

    Os valores de parâmetro dwOptionsFlags são definidos na enumeração MFNetCredentialOptions . Para salvar as credenciais do usuário para uma URL em um armazenamento persistente, defina o sinalizador MFNET_CREDENTIAL_SAVE. Se a chamada SetUserOptions for concluída com êxito, a chamada subsequente para GetCredential procurará as credenciais no armazenamento persistente. Se uma correspondência for encontrada, esse método retornará um ponteiro para o objeto de credencial que contém as informações.

    Por padrão, as credenciais de usuário enviadas pela rede são criptografadas. Para alterar isso para limpar o texto, defina o sinalizador MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT.

    Para remover informações do registro, chame GetCredential para obter o objeto de credencial e chame SetUserOption e defina dwOptionsFlags como MFNET_CREDENTIAL_DONT_CACHE.

Autenticação de Origem de Rede