Obtenga el nombre distinguido de Active Directory del usuario actualmente conectado

¿Cómo puedo obtener el nombre distinguido de Active Directory del usuario que ha iniciado sesión actualmente en C#?

preguntado el 03 de mayo de 12 a las 10:05

¿Por LDAP te refieres a Active Directory? -

Sí, me refiero a AD - ¡lo siento! -

Sp, cambie dentro de su pregunta de LDAP a AD, gracias. -

posible duplicado de ¿Cómo determinar el DN del usuario después de la autenticación con un Active Directory?. El título es diferente, pero en esencia es la misma pregunta. -

2 Respuestas

Verifique el siguiente fragmento. tienes pase para Identity.Name del IPprincipal. Supongo que el usuario ya está autenticado en Active Directory (es decir, usando métodos de autorización estándar de IIS).

private string GetUserName(string identity)
{
    if (identity.Contains("\\"))
    {
        string[] identityList = identity.Split('\\');
        return identityList[1];
    }
    else
    {
        return identity;
    }
}

public string GetUserDn(string identity)
{            
    var userName = GetUserName(identity);   
    using (var rootEntry = new DirectoryEntry("LDAP://" + adConfiguration.ServerAddress, null, null, AuthenticationTypes.Secure))
    {       
        using (var directorySearcher = new DirectorySearcher(rootEntry, String.Format("(sAMAccountName={0})", userName)))
        {
            var searchResult = directorySearcher.FindOne();                    
            if (searchResult != null)
            {
                using (var userEntry = searchResult.GetDirectoryEntry())
                {
                    return (string)userEntry.Properties["distinguishedName"].Value;                 
                }
            }
        }                
    }   
    return null;
}        

contestado el 03 de mayo de 12 a las 11:05

Tengo problemas con DirectoryEntry, no puedo usar System.DirectoryServices.DirectoryEntry porque no existe. ¿Algún consejo sobre este tema, cómo puedo importarlo? - Tunc Jamgocyan

Está en System.DirectoryServices - empi

Bueno, ese es el problema. No tengo ninguna entrada para ello, ver: i.imgur.com/WrLFK.png - Tunc Jamgocyan

Debe agregar una referencia en su proyecto a System.DirectoryServices: haga clic con el botón derecho en el proyecto y elija Agregar referencia. - empi

Ah, eso fue todo. Gracias. :) Soy un programador de Java y nunca he usado C# para nada. Por eso hago preguntas tontas. - Tunc Jamgocyan

¿Por qué no usarías simplemente: System.DirectoryServices.AccountManagement.UserPrincipal.Current.DistinguishedName

Respondido 17 Oct 12, 01:10

Lo siento, pero no sé qué es MSA. - John Ruiz

es administrar cuentas de servicio como dominio\usuario$ technet.microsoft.com/en-us/library/dd560633(v=ws.10).aspx - 2xmáx.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.