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.
Tópicos relacionados