Estoy tratando de obtener la información del usuario para un dominio específico que será la entrada del programa. Sobre la base del nombre de dominio, debe devolver la lista del nombre de usuario/o ID NT y SID del usuario. Soy nuevo en la programación de ldap. ¿Alguien me puede ayudar a obtener esta lista?Cómo obtener un nombre de usuario y SID para el usuario por un nombre de dominio en ldap
Respuesta
Si tiene .NET 3.5 en adelante y está hablando de Active Directory, entonces debe verificar el espacio de nombres System.DirectoryServices.AccountManagement
(S.DS.AM). Leer todos los detalles aquí:
- Managing Directory Security Principals in the .NET Framework 3.5
- MSDN docs on System.DirectoryServices.AccountManagement
Básicamente, se puede definir un contexto de dominio y encontrar fácilmente los usuarios y/o grupos en el año:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
var usersSid = user.Sid;
// not sure what you mean by "username" - the "DisplayName" ? The "SAMAccountName"??
var username = user.DisplayName;
var userSamAccountName = user.SamAccountName;
}
El ¡El nuevo S.DS.AM hace que sea muy fácil jugar con usuarios y grupos en AD!
Actualización: si tiene que recorrer todos los usuarios de un dominio - Prueba esto:
Se puede utilizar un PrincipalSearcher
y un director "de consulta por ejemplo" para hacer su búsqueda:
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// define a "query-by-example" principal - here, we search for a UserPrincipal
UserPrincipal qbeUser = new UserPrincipal(ctx);
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// find all matches
foreach(var found in srch.FindAll())
{
UserPrincipal user = found as UserPrincipal;
if(user != null)
{
// do whatever here
var usersSid = user.Sid;
// not sure what you mean by "username" - the "DisplayName" ?
var username = user.DisplayName;
var userSamAccountName = user.SamAccountName;
}
}
actualización # 2: si no puede (o no quiere) utilizan el enfoque S.DS.AM
- que es el más fácil, para Active Directory, con mucho, - entonces usted necesita para caer de nuevo a la System.DirectoryServices
clases y métodos:
// define the root of your search
DirectoryEntry root = new DirectoryEntry("LDAP://dc=YourCompany,dc=com");
// set up DirectorySearcher
DirectorySearcher srch = new DirectorySearcher(root);
srch.Filter = "(objectCategory=Person)";
srch.SearchScope = SearchScope.Subtree;
// define properties to load
srch.PropertiesToLoad.Add("objectSid");
srch.PropertiesToLoad.Add("displayName");
// search the directory
foreach(SearchResult result in srch.FindAll())
{
// grab the data - if present
if(result.Properties["objectSid"] != null && result.Properties["objectSid"].Count > 1)
{
var sid = result.Properties["objectSid"][0];
}
if(result.Properties["displayName"] != null && result.Properties["displayName"].Count > 0)
{
var userName = result.Properties["displayName"][0].ToString();
}
}
hola, gracias por la respuesta .. Pero en mi caso no definiré a ningún usuario ... debería ser el bucle de cada usuario para un dominio particular. – Eshwer
@Eshwer: actualicé mi respuesta con un bucle a ** todos los usuarios ** de un dominio dado - esto ** SERÁ LENTO ** si tiene muchos usuarios. –
Hola ... Pero, ¿dónde especificas el ldap url ..? o no es requerido? en este caso, ¿de dónde tomará la lista de usuarios? – Eshwer
- 1. Cómo obtener un nombre de usuario sin dominio
- 2. C# Active Directory: ¿Obtener el nombre de dominio del usuario?
- 3. ¿Cómo obtengo el nombre del usuario actual de Windows en formato de nombre de usuario @ dominio?
- 4. Obtener el nombre de dominio de Active Directory para el usuario actual que usa Mac OSX
- 5. Autenticación Java LDAP con nombre de usuario y contraseña
- 6. LDAP - ¿Cómo verificar una combinación de nombre de usuario/contraseña?
- 7. Curl para solicitar un nombre de usuario y contraseña
- 8. Encontrar un usuario en Active Directory con el nombre de usuario
- 9. ¿Obtener nombre de usuario en el constructor para el controlador?
- 10. Obtener el nombre para mostrar del usuario de WindowsIdentity
- 11. ¿Cómo puedo verificar si existe un nombre de usuario dado?
- 12. Convierta un nombre de usuario a una cadena de SID en C# /. NET
- 13. ¿La mejor manera de resolver el nombre de usuario de visualización por SID?
- 14. Java - ¿Cómo obtener el nombre de usuario registrado de OS (desde el dominio)?
- 15. Dado el SID de un usuario, ¿cómo obtengo su userPrincipalName?
- 16. ¿Cómo obtengo el nombre de usuario en un Makefile?
- 17. Tengo un SID de una cuenta de usuario y quiero los SID de los grupos a los que pertenece
- 18. Determine el dominio y el nombre de usuario utilizados para asignar una unidad de red
- 19. FOSUserBundle: nombre de usuario vs nombre de usuario canónico
- 20. C++ Obtener nombre de usuario Proceso De
- 21. ¿Cómo puedo convertir desde un SID a un nombre de cuenta en C#
- 22. WCFTestClient: ¿cómo puedo agregar un nombre de usuario y pasar?
- 23. ¿Cómo obtener un nombre de usuario en Active Directory a partir de un nombre para mostrar en C#?
- 24. preg_match() y nombre de usuario
- 25. Pasar un nombre de computadora y un nombre de usuario en una secuencia de comandos por lotes
- 26. ¿Cómo obtener el nombre de usuario/visualización en Buddypress?
- 27. Obtener el nombre de usuario en un gadget contextual de Gmail
- 28. MVC3 + Cómo obtener el nombre de usuario del usuario registrado actualmente
- 29. Git cli: obtener información de usuario del nombre de usuario
- 30. Obtener la dirección de correo electrónico de un usuario del nombre de usuario a través de PowerShell y WMI?
Cuando dicen * LDAP *, Qué quiere decir * Active Directory * en Windows, o necesita una solución LDAP "genérico" para todos los posibles servidores LDAP .... –