¿Es posible recuperar una lista de todos los atributos/valores de LDAP sin especificar, de ser así, cómo puede ser posible?LDAP - ¿Recuperar una lista de todos los atributos/valores?
Respuesta
Especifique "*" como el único valor en la lista de atributos para devolver.
Si también desea los atributos operativos, agregue "+" a la lista.
Funcionó perfectamente gracias. search.PropertiesToLoad.Add ("*"); search.PropertiesToLoad.Add ("+"); – DFTR
Puede usar un DirectoryEntry para generar una lista de propiedades, por supuesto deberá usar a para cada una de ellas a través de la lista de propiedades.
DirectoryEntry objADAM = default(DirectoryEntry);
string properties = string.Empty;
foreach (string property in objADAM.Properties.PropertyNames)
{
properties += property + ", ";
}
siempre se puede sin embargo referirse a
http://www.codeproject.com/KB/system/everythingInAD.aspx
cuando se trata de C# y Active Directory.
ACTUALIZACIÓN: http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C
Sí, pero ** solo ** obtiene aquellas propiedades que tienen un valor asignado, para esa particular 'DirectoryEntry'. Esto no ** enumera ** la lista completa de propiedades posibles ..... –
'http: // www.codeproject.com/KB/system/everythingInAD.aspx' no encontrado – Kiquenet
bien "al recuperar todos los atributos" por sí solos, por lo que el Directorio de la preocupación de que no tiene sentido. ¿Quieres decir:
- Todo usuario atributos posibles, ya que se lo descrito en el esquema
- Todos los atributos de usuario valorados
- todos los usuarios y atributos operativos
Y yo no se cuida del hecho de que algunos atributos de los usuarios pueden ser de solo lectura y otros solo estar escritos con valores específicos. Agrego la forma de obtener el contenido.
@Ghostfire brinda la solución para recuperar todos los atributos de usuario valorados y los atributos operacionales.
DirectoryEntry deUser = new DirectoryEntry("LDAP://WM2008R2ENT:389/CN=AUser,OU=MonOu,DC=dom,DC=fr");
foreach (string property in deUser.Properties.PropertyNames)
{
Console.WriteLine("\t{0} : {1} ", property, deUser.Properties[property][0]);
}
Pero recuerda que en una búsqueda LDAP, la mejor manera es dar a los attributs que desea retreive:
/* Connection to Active Directory
*/
DirectoryEntry deBase = new DirectoryEntry("LDAP://WM2008R2ENT:389/dc=dom,dc=fr");
/* Directory Search
*/
DirectorySearcher dsLookFor = new DirectorySearcher(deBase);
dsLookFor.Filter = "(sn=users)";
dsLookFor.SearchScope = SearchScope.Subtree;
dsLookFor.PropertiesToLoad.Add("cn");
dsLookFor.PropertiesToLoad.Add("givenName");
dsLookFor.PropertiesToLoad.Add("telephoneNumber");
dsLookFor.Sort = new SortOption("givenName", SortDirection.Descending);
dsLookFor.VirtualListView = new DirectoryVirtualListView(1, 0, 2);
SearchResultCollection srcUsers = dsLookFor.FindAll();
lista de todos los parámetros que agarrar mi objeto de la clase DirectoryEntry. Espero que le ayudará:
objectClass = System.Object[]
cn = Administrator
sn = Kwiatek (Last name)
c = PL (Country Code)
l = Warszawa (City)
st = Mazowieckie (Voivodeship)
title = .NET Developer
description = Built-in account for administering the computer/domain
postalCode = 00-000
postOfficeBox = Warszawa Ursynów
physicalDeliveryOfficeName = Wojskowa Akademia Techniczna
givenName = Piotr (First name)
distinguishedName = CN=Administrator,CN=Users,DC=helpdesk,DC=wat,DC=edu
instanceType = 4
whenCreated = 2012-11-23 06:09:28
whenChanged = 2013-02-23 13:24:41
displayName = Piotr Kwiatek (Konto administratora)
uSNCreated = System.__ComObject
memberOf = System.Object[]
uSNChanged = System.__ComObject
co = Poland
company = HELPDESK
streetAddress = Kaliskiego 2
wWWHomePage = http://www.piotr.kwiatek.org
name = Administrator
objectGUID = System.Byte[]
userAccountControl = 512
badPwdCount = 0
codePage = 0
countryCode = 616
badPasswordTime = System.__ComObject
lastLogoff = System.__ComObject
lastLogon = System.__ComObject
logonHours = System.Byte[]
pwdLastSet = System.__ComObject
primaryGroupID = 513
objectSid = System.Byte[]
adminCount = 1
accountExpires = System.__ComObject
logonCount = 178
sAMAccountName = Administrator
sAMAccountType = 805306368
objectCategory = CN=Person,CN=Schema,CN=Configuration,DC=helpdesk,DC=wat,DC=edu
isCriticalSystemObject = True
dSCorePropagationData = System.Object[]
lastLogonTimestamp = System.__ComObject
mail = [email protected]
nTSecurityDescriptor = System.__ComObject
y aquí tienes código:
string currentUserSid = WindowsIdentity.GetCurrent().User.Value;
PrincipalContext ctx = new PrincipalContext(
ContextType.Domain,
"helpdesk.wat.edu");
UserPrincipal up = UserPrincipal.FindByIdentity(
ctx, IdentityType.Sid,
currentUserSid);
/*
*
*/
DirectoryEntry entry = up.GetUnderlyingObject() as DirectoryEntry;
PropertyCollection props = entry.Properties;
/*
*
*/
foreach (string propName in props.PropertyNames)
{
if (entry.Properties[propName].Value != null)
{
Console.WriteLine(propName + " = " + entry.Properties[propName].Value.ToString());
}
else
{
Console.WriteLine(propName + " = NULL");
}
}
Console.ReadKey();
Cómo obtener el valor para' System. Object [] ',' System .__ ComObject', 'System.Byte []', etc *** properties ***? – Kiquenet
// This will list ALL the properties from AD (between 200 and 800..or more)
// If someone has a solution for non AD servers please post it!
List<String> properties = new List<String>();
IPAddress[] ips = Dns.GetHostAddresses(Server).Where(w => w.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToArray();
if (ips.Length > 0)
{
DirectoryContext directoryContext = new DirectoryContext(DirectoryContextType.DirectoryServer, ips[0].ToString() + ":389", Username, Password);
ActiveDirectorySchema adschema = ActiveDirectorySchema.GetSchema(directoryContext);
ActiveDirectorySchemaClass adschemaclass = adschema.FindClass("User");
// Read the OptionalProperties & MandatoryProperties
ReadOnlyActiveDirectorySchemaPropertyCollection propcol = adschemaclass.GetAllProperties();
foreach (ActiveDirectorySchemaProperty schemaProperty in propcol)
properties.Add(schemaProperty.Name.ToLower());
}
¿Qué *** espacio de nombres *** para 'DirectoryContext'? – Kiquenet
usando System.DirectoryServices.ActiveDirectory; –
Para obtener una lista de todas las propiedades posibles que usted debe buscar en la consulta del esquema para un determinado objectClass.
- 1. Cómo recuperar todos los grupos desde LDAP con Perl
- 2. Eliminar todos los elementos de una lista
- 3. Componer una lista de todos los pares
- 4. Obtener lista de usuarios LDAP usando PLSQL
- 5. Recuperar todos los valores publicados en ASP.NET
- 6. todos los elementos en una lista
- 7. Cómo recuperar todos los datos en una consulta
- 8. Recuperar todos los registros en una tabla con nHibernate
- 9. Enumerar todos los usuarios en LDAP con PHP
- 10. ¿Cómo recuperar todos los objetos de una colección de Mongodb, incluidos los identificadores?
- 11. LDAP: ¿Cómo obtener todos los grupos en Active Directory?
- 12. Obtener los identificadores de todos los objetos en una lista
- 13. Cómo recuperar todos los métodos públicos desde * .dll
- 14. Recuperar lista de permisos
- 15. Cómo recuperar información de forma programática desde LDAP
- 16. Recuperar todos los atributos de asociación de un modelo AR?
- 17. Obtenga una lista de todos los nodos de árbol (en todos los niveles) en TreeView Controls
- 18. Impresión de todos los posibles subconjuntos de una lista
- 19. obtener una lista de todos los modelos de rieles
- 20. Strip todos los elementos de una lista de cadenas
- 21. Consulta LDAP para todos los usuarios en sub OU dentro de una unidad organizativa particular
- 22. ¿Cómo recuperar una lista de directorios RÁPIDAMENTE en Java?
- 23. Lista maestra de todos los eventos Tkinter?
- 24. Lista de todos los usuarios y grupos
- 25. Lista de todos los ensamblados .NET
- 26. Recuperar todos los ID de producto asociados con una regla de precio de catálogo en Magento
- 27. Cómo obtener Pythonically todos los valores de una lista?
- 28. Seleccionar todos los elementos de una lista en hibernación
- 29. ¿Cómo mostrar todos los elementos en una lista de arrays?
- 30. Lista dinámicamente todos los miembros de una clase
¿Obtuviste la solución final usando 'PrincipalContext'? ¿Qué versión de .NET Framework utiliza? – Kiquenet