UserPrincipal.FindByIdentity () sempre retorna nulo

Estou usando o LdapAuthentication para registrar um usuário no Active Directory. Quero encontrar todos os grupos aos quais o usuário pertence. Estou usando o seguinte código:

string adPath = "LDAP://OU=HR Controlled Users,OU=All Users,DC=myDomain,DC=local";
LdapAuthentication adAuth = new LdapAuthentication(adPath);
try
{
    if (true == adAuth.IsAuthenticated("myDomain", txtLoginEmail.Text, txtLoginPassword.Text))
    {
        string email = txtLoginEmail.Text;

        using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
        {
            UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.Name, email);
            foreach (var group in user.GetGroups())
            {
                Console.WriteLine(group.Name);
            }
        }
    }
}
catch(Exception e) { /* Handle Error */ }

Meu problema é que, quando ligo para UserPrincipal.FindByIdentity (), sempre obtenho um valor nulo, mesmo que a autenticação do usuário funcione conforme o esperado.

Por que isso está acontecendo? Existe algum problema com o código ou com minha abordagem? Isso está sendo executado dentro de um aplicativo ASP.NET 4.0 WebForms.

Atualizar:

Aparentemente, eu tenho usado o IdentityType (cn) errado. Fiz o check-in da depuração e o nome da conta é "UsuárioA".

Então, tentei usar o seguinte código manualmente:

UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.Name, "UserA");

Mas ainda assim eu fico nulo.

Atualização 2 (resolvida):

A questão foi dupla. Eu precisava especificar o nome do meu controlador de domínio ao declarar oPrincipalContext.

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "myDomain"))
{
   // code here...
}

Então, ao procurar oUserPrincipal Eu estava usando o erradoIdentityType; Eu estava pesquisando comIdentityType.Name - qual é o nome da conta - em vez deIdentityType.SamAccountName - qual é o nome de usuário.

UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, email);

Problema resolvido.

questionAnswers(1)

yourAnswerToTheQuestion