you specify source selections one net need more missing framework features are .net-3.5 active-directory

.net 3.5 - specify - Diferencia entre NativeGuid y Guid en Active Directory



net framework 3.5 offline windows server 2012 r2 (1)

Como ha adivinado, ambas son representaciones del mismo valor exacto. La diferencia está en el formato; DirectoryEntry.NativeGUID se muestra en orden little-endian (sin guiones), que es como se almacena "nativamente" en el servicio de directorio y UserPricipal.GUID/DirectoryEntry.GUID se muestra en orden big-endian (con guiones). Vea el artículo de Wikipedia sobre Endianess para más detalles.

Por lo tanto, cuando imprime el valor para NativeGUID (una cadena), no debería mostrar ningún guión (como hace su ejemplo) a menos que cree un nuevo GUID utilizando la cadena como entrada ( Guid ng = new Guid(de.NativeGuid); ). Eso creará cierta confusión ...

Lo importante es no mezclar los dos al almacenar los GUID en una fuente de datos externa o al almacenar un NativeGUID como un GUID de big endian.

Así que me gustaría ir a UserPricipal.GUID / DirectoryEntry.GUID porque así se muestra el atributo objectGUID usando la mayoría de las herramientas de administración de Windows (como Usuarios y computadoras de Active Directory y ADSI Edit) y cómo se almacena y se muestra en SQL Server cuando utilizar el tipo de datos uniqueidentifier También; deberá ir "debajo" UserPrincipal ( GetUnderlyingObject() ) para obtener el valor NativeGUID (o convertir la propiedad UserPrincipal.GUID a little-endian).

Así que supongo que tendrá que decidir si migrar sus datos "externos" existentes al formato GUID o continuar usando el formato NativeGUID. En este momento estoy adivinando que estás en algún punto intermedio.

Necesito actualizar algunos códigos de consulta de AD y quiero usar los nuevos .NET 3.5 System.DirectoryServices.AccountManagement para consultar AD de una manera administrada en lugar de nuestro método actual de uso de LDAP.

Encontré un problema extraño al leer el valor UserPrincipal.Guid. Resulta que es similar pero diferente de los Guids que hemos estado utilizando a través de LDAP.

Al principio parecían completamente diferentes, pero en una segunda toma, vi que la última mitad es idéntica y la primera mitad se transpone simplemente, es decir:

Nuevo (.NET 3.5) Método GUID: 01234567-89ab-cdef-0123-456789abcdef
Método anterior (LDAP) GUID: 67452301-ab89-efcd-0123-456789abcdef

Verifiqué el código LDAP y vi que estábamos usando el campo NativeGuid SearchResult.GetDirectoryEntry (). Para obtener el Old Guid.

Tiene una propiedad diferente llamada SearchResult.GetDirectoryEntry (). Guid que es idéntico al GUID que recupero usando las nuevas clases .Net 3.5.

Mi pregunta es, ¿por qué son (más o menos) diferentes y cuáles debo usar?