Thursday 19 October 2017

Ldapsearch Objectsid Binary Options


Habilitación de LDAPS en Windows 2008 Active Directory Server Instale Active Directory seleccionando la función de servicios de dominio de Active Directory desde el diálogo del Administrador de servidores. Las instrucciones paso a paso se pueden ver en Implementación de un entorno de prueba de Windows en una infraestructura KVM. Ejecución de un ldapsearch en un servidor AD de Windows Después de instalar AD, puede confirmar que está escuchando en el puerto 389: podemos ver su escucha en el puerto 389 y hay algunas conexiones locales a ese puerto para el servidor AD. Ahora vamos a seguir adelante y agregar un usuario LDAP de prueba para nuestras consultas. Agregar nuevo usuario a AD a través de la consola Usuarios y equipos de Active Directory Para iniciar la Consola de Usuarios y equipos de Active Directory, ejecute el siguiente comando desde el diálogo de ejecución: En este punto verá la siguiente ventana: A continuación, haga clic con el botón derecho en el espacio en blanco y Vaya a Nuevo - gt Usuario: A continuación, llene la información del usuario: Por último, establecer la contraseña de los usuarios: Después de todo lo dicho y hecho, verá lo siguiente en los usuarios de Active Directory y consola de equipos: Así que nuestro usuario de prueba será elatov. Utilice ldp. exe para navegar por el servidor AD Desde la ejecución del diálogo ejecutar: y verá lo siguiente: Ahora vamos a enlazar con el servidor AD, ya que somos locales para el servidor AD que sólo puede vincular con el mismo usuario que estamos actualmente Inicie sesión: y deja salir los valores predeterminados: Después de hacer clic en Aceptar, verá la conexión pasar y el enlace al servidor de AD con éxito: Ahora vamos a empezar a navegar por el servidor de AD, en primer lugar seleccione la vista de árbol: Después de que tenemos que elegir El BaseDN. Esto es básicamente donde queremos iniciar la búsqueda. Elegiremos dcelatov, dclocal. Que es básicamente la raíz del servidor AD. Solo quiero ver todas las ramas / niños disponibles que forman parte del servidor AD: Expandiendo la rama de Usuarios y localizando nuestro usuario de prueba elatov, vemos lo siguiente: Podemos ver que el DN (Nombre Distinguido) del usuario de prueba es : A partir de ahora ya que sabemos que todos los usuarios están bajo CNUsers, DCelatov, DClocal lo usaremos como nuestro BaseDN, de esta manera no tendremos que consultar toda la estructura AD. Usar dsquery para encontrar DN de usuarios Hay una utilidad de línea de comandos llamada dsquery. Que muestra una visión más sucinta. Por ejemplo, para encontrar el DN de nuestro usuario, podemos ejecutar el comando follow desde el símbolo del sistema: Si desea encontrar todos los grupos disponibles en un servidor AD, puede ejecutar lo siguiente: Use openldap Tools para realizar una consulta LDAP Hay un par de versiones de clientes LDAP para Linux: Normalmente la ubicación del binario le permitirá saber cuál tiene. Por ejemplo, aquí hay dos binarios en el mismo sistema: RedHat utiliza principalmente la versión de Mozilla. Desde las ubicaciones de las herramientas LDAP: Para todas las guías y documentación de Red Hat Directory Server, las herramientas LDAP utilizadas en los ejemplos, como ldapsearch y ldapmodify. Son las herramientas Mozilla LDAP. Para la mayoría de los sistemas Linux, las herramientas OpenLDAP ya están instaladas en el directorio / usr / bin /. Las dos versiones diferentes tienen diferentes argumentos, así que asegúrate de saber cuál estás usando. Vamos a realizar una consulta LDAP con las herramientas openldap primero: Podemos ver que usé CNUsers, DCelatov, DClocal como mi baseDN y usé la cuenta email160protected para enlazar con el servidor AD. También podría utilizar la cuenta elatov para vincular con, por ejemplo: Aviso esta vez sólo agarró el campo de nombre para restringir los resultados de búsqueda. Usar las herramientas de mozldap para realizar una consulta de LDAP Aquí está la misma consulta que la anterior usando las herramientas de Mozilla LDAP: Por ahora sólo los argumentos de contraseña son diferentes. Habilitación de LDAPS en el servidor de AD Después de instalar el rol de Servicios de dominio de Active Directory, en realidad inicia el servidor de AD en el puerto seguro (636): Pero como no hemos subido un certificado adecuado, no funcionará correctamente. LDAPS Requisitos previos La lista está disponible en Event ID 1220 LDAP sobre SSL. Desde esa página: El certificado debe ser válido para el propósito de la autenticación del servidor. Esto significa que también debe contener el identificador del objeto de autenticación del servidor (OID): 1.3.6.1.5.5.7.3.1 El nombre del sujeto o el nombre del nombre alternativo del sujeto (SAN) debe coincidir con el nombre de dominio completo (FQDN, Fully Qualified Domain Name) De la máquina host, como Asunto: CNserver1.contoso. La cuenta de máquina host debe tener acceso a la clave privada. Recientemente había creado mi propio certificado con mi propia CA. Compruebe hacia fuera el archivo de fuente de certificateproperties. c aquí son los OIDs diferentes definidos: Deja tan para encender encima de gnomint y comprobar para ver si tuve bastante afortunado permitir este certificado ser utilizado para un servidor de WWW de TLS. Para comprobar si el certificado se puede utilizar para esa funcionalidad, haga clic derecho en el certificado y seleccione Propiedades: A continuación, haga clic en la pestaña Detalles, expanda las extensiones y, por último, expanda la sección Uso extendido de clave: Yay tuve la suerte de dejarlo Opción activada. Yo estaba usando un certificado salvaje por lo que el nombre del asunto coincidiría también. Ahora vamos a seguir las instrucciones de la página de Microsoft anterior para importar el certificado. Importar un certificado en el almacén personal de AD DS 1. Abra Microsoft Management Console (MMC). Desde el diálogo Ejecutar, escriba: y lo hará: 2.Haga clic en Archivo. Haga clic en Agregar o quitar complemento. Seleccione Certificados de los complementos disponibles y, a continuación, haga clic en Agregar: 3. En Agregar o quitar complementos. Haga clic en cuenta de servicio para ver los certificados que se almacenan en el almacén personal de servicios y, a continuación, haga clic en siguiente: 4. En Agregar o quitar complementos. Haga clic en Equipo local. Y luego haga clic en Siguiente. 5. En Agregar o quitar complementos. Haga clic en Servicios de dominio de Active Directory. Haga clic en Finalizar. Y luego haga clic en Aceptar: 6. En el árbol de la consola, expanda Certificados - Servicio (Servicios de dominio de Active Directory). Expanda Personal. A continuación, expanda Certificados: 7. Para importar un certificado, haga clic con el botón secundario en la carpeta NTDSPersonal. Haga clic en Todas las tareas. Y luego haga clic en Importar: Después de importar el certificado, verá lo siguiente en el complemento: Puesto que este un certificado autofirmado asegúrese de seguir las instrucciones establecidas en Configuración de su propia autoridad de certificación (CA) en Linux y utilizarlo En un entorno de Windows para importar su propio certificado de CA en el almacén de certificados normal. Simplemente inicie: y asegúrese de que su CA se encuentre en la carpeta Autoridades de certificados raíz de confianza: Pruebe la conexión LDAPS con ldp. exe Inicie ldp. exe. Vaya a Connection - gt Connect y complete la información necesaria y asegúrese de que SSL está seleccionado: A continuación, haga clic en Aceptar y asegúrese de que la conexión sea correcta: Realizar consulta LDAPS con herramientas OpenLDAP Si intentamos la búsqueda normal, obtendremos este error: Dado que estamos utilizando un certificado autofirmado, se espera. Desde la página de manual de ldap. conf. Tenemos las siguientes opciones: Tenía el certificado, pero no quería molestarse con la verificación TLS, así que simplemente lo ignoró: La principal diferencia son entre SSL y OpenLaps no SSL ldapsearch fueron: - H para especificar el URI de la AD Server - x para usar la autenticación simple en lugar de SASL - LLL para obtener un resultado de búsqueda más sucinto Realizar consulta LDAPS con herramientas MozLDAP Inicialmente la consulta tenía el siguiente error: con MozLDAP realmente utiliza NSS para verificar los certificados SSL y desafortunadamente no puede ignorar el Verificación (o no encontré un camino). Así que vamos a seguir adelante y generar un nuevo NSSDB: Ahora vamos a poner en nuestra CA en el NSSDB: Ahora vamos a asegurarse de que su allí: Ahora vamos a hacer la consulta LDAP real con MozLDAP sobre LDAPS: Ahora hemos confirmado de muchas maneras diferentes que LDAPS En el servidor AD funciona. Sintaxis del filtro de LDAP Este tema trata de la sintaxis y las reglas de un filtro LDAP, que es una cadena normal que expresa los criterios del filtro. Necesita conocer los filtros LDAP si desea buscar objetos y filtrar objetos en el navegador LDAP LEX. Sintaxis y operadores básicos del filtro LDAP Los filtros LDAP consisten en uno o más criterios. Si existe más de un criterio en una definición de filtro, pueden ser concatenados por operadores Y u OR lógicos. Los operadores lógicos se colocan siempre delante de los operandos (es decir, los criterios). Esta es la llamada notación polaca. Los criterios de búsqueda deben ponerse entre paréntesis y, a continuación, el término completo debe colocarse entre corchetes una vez más. (K1) (K2)) o con más de dos criterios: (K1) (K1) (K2) ) O con más de dos criterios: ((K1) (K2) (K3) (... K4)) Cada operación Y / O también puede entenderse como un criterio único: (( (K1 Y K2) O (K3 Y K4) Los criterios de búsqueda consisten en un requisito para un atributo LDAP , p. ej (GivenNameSandra). Las reglas siguientes deben ser consideradas: (atributo abc). p. ej. (Amp (objectclassuser) (displayNameFoeckeler)) El carácter cero (00) también se puede requerir de vez en cuando. También es posible filtrar para ciertos valores en atributos multivalores. Un ejemplo es el atributo objectClass. Debido a la estructura jerárquica del esquema del directorio, Objeto será siempre una instancia de varias clases de objetos. Un usuario de ADS, por ejemplo, es un objeto de los tipos de clase superior. Persona y usuario. Por lo tanto, un filtro podría ser: Sin embargo, debe tener en cuenta que tal filtrado siempre cuesta Más rendimiento de servidor que una búsqueda de atributo unidimensional normal hace Filtrado para números hexadecimales y valores binarios En los casos en que los atributos del tipo entero o entero largo se comparan y filtran para números hexadecimales específicos, el número decimal codificado correspondiente siempre debe utilizarse En el filtro LDAP Un ejemplo: si busca grupos de seguridad locales en el ADS después de dos indicadores tendrá que establecerse para el atributo groupType: ADSGROUPTYPELOCALGROUP (0x00000004) ADSGROUPTYPESECURITYENABLED (0x80000000) La adición de estos valores es el valor hexadecimal 0x80000004, Calculado en el número decimal 2147483652 - esto tiene que ser usado en el filtro LDAP: Es completamente diferente si desea componer filtros para atributos cuyos tipos de datos aparecen como valores hexadecimales binarios (el tipo de datos correspondiente se denomina a menudo Octet String ). Si va a filtrar para tales atributos binarios, es obligatorio declarar cada byte que tiene que ser comparado en código hexadecimal. Por ejemplo, si busca objetos con el atributo Inventario que tiene el valor 0x01AAF5EF, el filtro apropiado tendrá que leer: (Inventory01aaf5ef) Desafortunadamente, la búsqueda de comodín no está permitida cuando se buscan atributos binarios Filtrado de campos de bits Mediante filtros LDAP También es posible encontrar objetos para los cuales un bit específico está o no está establecido dentro de un campo de bits. En este caso, se debe seguir una sintaxis de aspecto extraño: ltAttribute namegt: ltBitFilterRule-IDgt: ltdecimal comparative valuegt Existen exactamente dos IDs BitFilterRule: Una para las comparaciones bit-wise AND y una para las comparaciones bit-wise OR: LDAPMATCHINGRULEBITAND 1.2.840.113556 .1.4.803 LDAPMATCHINGRULEBITOR 1.2.840.113556.1.4.804 Para el atributo groupType siguiente bit mask es importante en los objetos de grupo ADS: ADSGROUPTYPEGLOBALGROUP 0x00000002 ADSGROUPTYPELOCALGROUP 0x00000004 ADSGROUPTYPEUNIVERSALGROUP 0x00000008 ADSGROUPTYPESECURITYENABLED 0x80000000 Un filtro para grupos universales tiene que buscar aquellos objetos en cuyos atributos el 4 Se establece el bit menos significativo. Esto se puede comprobar igualando el atributo del valor 0x00000008 (esto representa el 4º bit) en un filtro AND: Todos los grupos universales: Atención: En los filtros LDAP el valor hexadecimal del filtro de bits debe ser decimal en este punto. (0x80000000 2147483648): Todos los grupos habilitados para la seguridad: Un ejemplo para un filtro OR: Buscamos todos los usuarios que no necesitan una contraseña (userAccountControl Se establece en 0x20 - 32) o cuyas contraseñas nunca expira (userAccountControl se establece en 0x10000 65536). Así que tenemos que construir un filtro con el valor 65568 (65536 32): Todos los usuarios que no necesitan una contraseña O cuyas contraseñas no expiran: Tenga en cuenta que el filtrado bit-wise es un procedimiento mucho más complejo para un servidor. Por esta razón debe tener en cuenta el uso de criterios de equidad normal. Si busca, p. Para los grupos de seguridad universal, los dos indicadores 0x80000000 y 0x00000008 se pueden sumar y luego se filtran para el valor decimal correspondiente 2147483656: Todos los grupos de seguridad universal: Tenga en cuenta que los diálogos LEX para editar los filtros LDAP le permiten establecer sintaxis de filtro de mapa de bits muy fácilmente . Filtrado con resolución de nombres ambiguos (ANR) La Resolución de nombres ambiguos es capaz de encontrar usuarios o contactos en entornos de Active Directory cuyos nombres sólo se conocen parcialmente. En este caso no sólo el nombre del objeto, sino también el nombre para mostrar, nombre y apellido, así como las diversas direcciones de correo están involucrados en la búsqueda. Como usuario de Outlook, puede echar un vistazo a la búsqueda de filtrado ANR utilizando, p. La opción Compruebe los nombres para obtener el mejor resultado mientras busca una dirección. Los atributos que se integran exactamente en la búsqueda ANR se especifican mediante los indicadores de búsqueda de atributos en el esquema de directorios. Al hacerlo, se declara un conjunto de atributos ANR. Los atributos siguientes forman parte de la ANR establecida de forma predeterminada: Nombre distinguido relativo (RDN). Esto podría ser, por ejemplo, los valores de cn. O tú ProxyAddresses (direcciones de correo) physicalDeliveryOfficeName (dirección de la oficina) La sintaxis de los filtros ANR es la siguiente (nombre del servidor) : Todos estos filtros se encuentran el usuario Foeckeler, Philipp. El segundo es capaz de encontrar Philipp Foeckeler, así como Fritz Paul. Esto se debe a que el filtro ANR comprueba el nombre y el apellido en ambas direcciones. Funciones de LDAP Tabla de contenidos ldap8859tot61 Traducir 8859 caracteres a t61 caracteres ldapadd Añadir entradas al directorio LDAP ldapbind Enlace al directorio LDAP ldapclose Alias ​​de ldapunbind ldapcompare Comparar el valor del atributo encontrado En entrada especificada con DN ldapconnect Conectar a un servidor LDAP ldapcontrolpagedresultresponse Recuperar la cookie de paginación LDAP ldapcontrolpagedresult Enviar control de paginación LDAP ldapcountentries Contar el número de entradas en una búsqueda ldapdelete Eliminar una entrada de un directorio ldapdn2ufn Convertir DN a User Friendly Formato de nomenclatura ldaperr2str Convertir LDAP error Número en el mensaje de error de cadena ldaperrno Devolver el número de error LDAP del último comando LDAP ldaperror Devolver el mensaje de error LDAP del último comando LDAP ldapescape Escapar de una cadena para utilizarlo en un filtro LDAP o DN ldapexplodedn Divide DN en sus componentes ldapfirstattribute Return first attribute Ldapfirstentry Devuelve el primer resultado id ldapfirstreference Devuelve la primera referencia ldapfreeresult Libera la memoria del resultado ldapgetattributes Obtiene los atributos de una entrada del resultado de la búsqueda ldapgetdn Obtén el DN de una entrada del resultado ldapgetentries Obtén todas las entradas del resultado ldapgetoption Obtén el valor actual de la opción dada ldapgetvalueslen Obtén todos los valores binarios de un resultado Entry ldapgetvalues ​​Obtener todos los valores de una entrada de resultados ldaplist Búsqueda de nivel único ldapmodadd Añadir valores de atributo a atributos actuales ldapmoddel Eliminar valores de atributos de atributos actuales ldapmodreplace Sustituir valores de atributo por nuevos ldapmodifybatch Modificar y ejecutar modificaciones en una entrada LDAP ldapmodify Modificar una entrada LDAP ldapnextattribute Obtener el siguiente atributo en el resultado ldapnextentry Obtener la siguiente entrada de resultado ldapnextreference Obtener la siguiente referencia ldapparsereference Extraer información de la entrada de referencia ldapparseresult Extraer información del resultado ldapreadame Leer una entrada ldaprename Modificar el nombre de una entrada ldapsaslbind Vincular al directorio LDAP utilizando SASL ldapsearch Buscar LDAP tree ldapsetoption Set El valor de la opción dada ldapsetrebindproc Establecer una función de devolución de llamada para hacer re-binds en referencias persiguiendo ldapsort Ordenar entradas de resultados LDAP ldapstarttls Iniciar TLS ldapt61to8859 Traducir t61 caracteres a 8859 caracteres ldapunbind Desvincular desde el directorio LDAP Notas de usuario 45 notas En primer lugar, mi inglés. Aquí hay dos funciones para comprobar la pertenencia a grupos y otras que pueden ser útiles para trabajar con LDAP (Active Directory en este ejemplo). Usuario bob contraseña zhlob host myldap dominio mydomain. ex basedn dcmydomain, grupo dcex SomeGroup ad ldapconnect (ldap: //.) O die (No se pudo conectar con el servidor LDAP.) Ldapsetoption (anuncio LDAPOPTPROTOCOLVERSION 3) ldapsetoption (ad LDAPOPTREFERRALS. 0) ldapbind (contraseña de anuncio) o dado (no podría enlazar a AD). Userdn getDN (usuario de anuncio. Basedn) if (checkGroupEx (ad. Userdn. GetDN (grupo de anuncios. CheckGroup (ad, userdn, getDN (anuncio, grupo, basedn))) echo Está autorizado como. GetCN (userdn) else echo Autorización fallida ldapunbind (ad) / Esta función busca en la entrada del árbol LDAP (ad - LDAP link identifier) ​​especificada por samaccountname y devuelve su cadena DN o epmty en caso de fallo. / Function getDN (atributos de resultado de resultado) ldapgetentries (resultado de anuncio) if (entradas count gt 0) else / This getDN (ad. Samaccountname. Basedn) atributos array (dn) resultado ldapsearch (ad. Basedn, (samaccountname). Función recupera y devuelve CN de DN / función determinada getCN (dn) pregmatch (coincidencias de /, dn. PREGOFFSETCAPTURE 3) coincidencias de retorno 0 0 / Esta función comprueba la pertenencia de grupo del usuario, buscando sólo en el grupo especificado (no recursivamente ). / Function checkGroup (ad userdn groupdn) atributos array (members) resultado ldapread (ad. Userdn. (Memberof) atributos) if (result FALSE) entradas ldapgetentries (resultado del anuncio) return (entradas count gt 0) Comprueba la pertenencia de grupo del usuario, buscando en grupo y grupos especificados cuáles son sus miembros (recursivamente). / Function checkGroupEx (ad. Userdn. Groupdn) atributos array (memberof) resultado ldapread (ad. Userdn. (Objectclass) atributos) if (result FALSE) entradas ldapgetentries (resultado del anuncio) if (entradas count lt 0) if (empty (Entradas 0 miembro de i, groupdn)) devuelve FALSO He editado el código de Jon Caplingers que es (entradas 0 miembro de i, groupdn)) else para (i 0 i lt entradas 0 miembro del recuento i) if (entradas 0 memberof i groupdn) Localizado abajo (fecha: 09-Nov-2002 05:44). - I corrige la línea if ((connectldapconnect (ldap))) if ((connectldapconnect (ldapserver))) - El nombre es: - field siempre fue un Array, así que cambié la línea de impresión a: echo Name is:. Infoiname0.ltbrgt También he añadido algunos filtros de búsqueda alternativos para probar. Aquí está el código: ldapserver ldap: //foo. bar. net authuser userbar. net authpass mypassword // Establece la base dn para buscar en todo el directorio. Basedn DCbar, DCnet // Mostrar sólo el filtro de personas de usuario (amp (objectClassuser) (objectCategoryperson) (cn)) // Habilitar para mostrar sólo los usuarios // filter (amp (objectClassuser) (cn)) // Habilitar para mostrar todo // Filter (cn) // conectar al servidor si ((connect ldapconnect (ldapserver))) die (no se puede conectar al servidor ldap) if ((bind ldapbind (connect. / If ((bindldapbind (connect))) // die (No se puede enlazar con el servidor) // // busca el directorio activo si ((search ldapsearch (connect. Basedn. Filter))) die (Unable to search ldap server) Numberreturned ldapcountentries (búsqueda de conexión) info ldapgetentries (búsqueda de conexión) echo El número de entradas devueltas es. Número devuelto. Ltpgt para (i 0 i lt info count i) echo El nombre es:. Info i nombre 0. Ltbrgt echo El nombre para mostrar es:. Info i displayname 0. Ltbrgt echo Correo electrónico:. Info i mail 0. Ltbrgt echo El número de teléfono es:. Info i número de teléfono 0. Ltpgt gt En Solaris 9, la biblioteca libnet es un requisito previo para la creación de PHP con LDAP, SASL y SSL (libnet está disponible en Sunfreeware). No vi esto mencionado en cualquier lugar y no estoy seguro si es requerido por ldap o sasl o ssl. Acabo de pasar una hora en Google sin suerte antes de que lo averigué, quizás este comentario ayudará al próximo google. El error es, ld: fatal: library - lnet: no encontrado ld: fatal: Errores de procesamiento de archivos. No hay salida escrita en sapi / cli / php collect2: ld devuelto 1 exit status make: sapi / cli / php Error 1 Pasó algún tiempo en la fijación No se puede cargar la biblioteca dinámica phpldap. dll. Se copió libeay32.dll y ssleay32.dll en todas partes, pero el error sigue en pie. Después de excavar todos estos dlls encontré que tanto libeay32.dll como ssleay32.dll necesitan msvcr70.dll (o msvcr71.dll, depende de la versión del compilador). A continuación, sólo copie ese dll a system32 dir y funciona perfectamente. En caso de que alguien tenga problemas para configurar PHP con soporte LDAP en una caja de Solaris 10, aquí está la línea de configuración que utilicé: / configure --with-nsapi / opt / SUNWwbsvr --enable-libgcc --disable-libxml --with-ldap / Usr / local --prefix / opt / php / php-5.0.4 La parte importante a tener en cuenta es la ubicación utilizada para --with-ldap que para la mayoría de las personas S10, será --with-ldap / usr / local. Cuando utiliza PHP en Windows y está intentando conectarse a un servidor LDAP de NetWare (6) que requiere conexiones seguras (LDAPS), PHP devolverá un mensaje indicando que no se puede encontrar el servidor. Una captura de tráfico de red del tráfico que tiene lugar en el intento de conexión revela que el servidor suministra un certificado para su uso en la conexión SSL, pero esto es rechazado (mal certificado paquete SSLv3) por el cliente. La razón de esto es probablemente que la implementación LDAP de PHP intenta verificar el certificado recibido con la CA que emitió el certificado. Puede haber una manera de hacer posible que esta verificación tenga éxito, pero también es posible desactivar esta verificación por el cliente (que es, en este caso, PHP) mediante la creación de un archivo de configuración openldap (sorpresa). La ubicación de este archivo de configuración parece estar codificada en el módulo de soporte de LDAP para Windows y es posible que necesite crear manualmente la siguiente estructura de directorios: En la carpeta sysconf, cree un archivo de texto denominado ldap. conf (puede utilizar el bloc de notas para esto ) Y, para deshabilitar la verificación de certificados, coloque la siguiente línea en el archivo ldap. conf: Después de esto, todas las llamadas ldapbind normales funcionarán, siempre y cuando la ID de usuario y la contraseña proporcionadas sean correctas. Notas para personas que ejecutan PHP 4 con Apache 2.2 en Win2k3. El servicio Apache debe ejecutarse bajo la cuenta de administradores locales para que ldapconnect devuelva un resultado. Asignado a la cuenta Administradores de dominio como puede suceder en servidores en un dominio de Active Directory. Parecerá funcionar bien, pero no devolverá ningún resultado de lo contrario. Así que utilice (nombre de servidor) el administrador para el nombre de usuario en las propiedades de inicio de sesión de servicio. La persecución de referencias en Active Directory (es decir, la búsqueda a través de dominios) puede ser lenta. Puede buscar el objeto en el GC (Catálogo Global) de la siguiente manera: Elimine cualquier referencia a ldap: // cuando utilice ldapconnect, es decir: use serv1.mydom NOT ldap: //serv1.mydom Conecte al puerto 3268 (no 389, el valor predeterminado) Establezca el DN base para la búsqueda en nulo, es decir: (comillas vacías). AD ejecutará entonces la búsqueda en el GC que contiene una copia de todos los objetos del Bosque. También puede recuperar un subconjunto de atributos (incluyendo la pertenencia al grupo, excepto los grupos locales). Aún necesitará seguir referencias para un conjunto completo de atributos. Para cualquiera que sea un programador y no esté muy familiarizado con las convenciones de nomenclatura en Microsoft Active Directory o cómo encontrar objetos dentro del directorio, o lo que es más importante cómo hacer referencia a los objetos. Al ejecutar adsiedit. msc desde la línea de comandos, se mostrarán todos los objetos del directorio en un formato de nomenclatura fácil de leer y copiar. Espero que esto sea útil Nota: Debe ejecutar este comando desde un controlador de dominio de AD Debe tener las Herramientas de Kit de recursos de Windows instaladas (no me dejaría hacer un enlace tan largo que tuve que hacer un salto de enlace - Lo siento) Details. aspx FamilyID9d467a69-57ff-4ae7-96ee-b18c4790cffdampdisplaylangen La instalación de esta herramienta debe modificar la ruta del sistema para que sólo pueda escribir el comando desde el diálogo de ejecución, de lo contrario la ruta absoluta es: C: Archivos de programaWindows Resource KitsToolsadsiedit. msc Hace poco tuve que Acceder a un servidor Microsoft Active Directory como un servicio LDAP a través de SSL mediante PHP. Me tomó mucho tiempo obtener toda la información que necesitaba para que funcionara. Traté de publicar una nota aquí con los detalles, pero terminó siendo demasiado largo. He colocado los detalles en la siguiente URL con la esperanza de que alguien más se beneficiará y será capaz de resolver el problema mucho más rápido que yo. Si está buscando usar PHP para integrar LDAP con AD (estoy trabajando con Win2K3), puede que desee jugar con la herramienta LDP. exe incluida (no necesita kit de recursos) con Win2k y Win2K3. Puede ejecutar esta aplicación desde la línea de comandos. La función de Ayuda de Win2K3 fue un buen punto de inicio y luego me señaló un artículo en el M KB: support. microsoft/default. aspxscidkben-us255602 (XADM: Navegación y consultas utilizando la utilidad LDP). Asi que. Si su conexión / enlaces están funcionando pero sus consultas no son, usted puede desear comenzar aquí. Estoy encontrando que es muy útil cuando lo ejecuto en el AD local para ver los atributos, etc Sólo una modificación a mi post anterior: mis cálculos estaban utilizando la costa este tiempo australiano (GMT10), mientras que la marca de tiempo Unix está en GMT. Por lo tanto, el valor entero de Active Directoys respontexpires comienza desde 1-Jan-1601 00:00:00 GMT y el número de segundos entre esta fecha y 1-Jan-1970 00:00:00 GMT es 11644524000. Los incrementos aún están definidos en 100 Nanoseconds though Más adelante a jabba at zeelandnet punto nls nota. Si está intentando conectarse a un URI de LDAPS con OpenLDAP, puede crear el archivo de configuración como se describe en jabba o, alternativamente, usar la configuración de entorno para establecer LDAPTLSREQCERTnever como se describe en ldap. conf (5). Libsasl. dll NO es necesario para las funcionalidades ldap. Vaya echa un vistazo a la publicación en: bugs. php. net/bug. phpid9485 En win2k he seguido estos sencillos pasos y tengo ldap para trabajar: 1. copiar phpldap. dll de la carpeta de extensión a winnt / system32 2. editar winnt / php. Ini para que ldap esté habilitado (descomente la línea). 3. reinicie IIS. Eso es todo y diviértete con ldap. Una nota para Microsoft Active Directory 1. Puede iniciar sesión con el correo electrónico del usuario, es decir, usercompany 2. Su más fácil de buscar información de usuario con ldapsearch mediante el filtrado: (userprincipalnameuser) En Win2k Server que ejecuta IIS, no es suficiente para reiniciar IIS después Permitiendo la extensión phpldap. Tienes que reiniciar el servidor mismo. Algunas notas sobre la ejecución de la extensión LDAP en un cuadro de Win2k: Después de copiar phpldap. php y libsasl. dll en cada directorio posible (c: WinNTSystem32, c: php.) Decidí leer el archivo installation. txt. Las instrucciones para instalar las extensiones php dicen: Algunos DLLs adicionales son necesarios para algunas extensiones de PHP. Copie los dlls agrupados del directorio dlls / directory en el paquete de distribución a su directorio windows / system (Win9.x) o winnt / system32 (WinNT, Win2000, XP). Si ya tiene estos DLL instalados en su sistema, sobrescribirlos sólo si algo no funciona correctamente. Así que hice exactamente eso: copiar TODOS los archivos dll de c: phpdlls a c: WinNTSystem32. Ahora se cargan bellamente -) Espero que esto ayude a alguien. Puede autenticarse fácilmente en un servidor ldap de dominios de Windows 2000 utilizando la forma simplificada de netbios del nombre de usuario. Alguien escrito: Al autenticarse en un servidor LDAP de Win2k, el nombre de la persona debe ser el NOMBRE COMPLETO en el dn NO. Puede utilizar este formulario: usuario DOMAINNAMEusername contraseña Passwordofuser if (conectar ldapconnect (ltservergt, ltportgt)) // error exit if (res ldapbind (ldap, user, password)) // error exit Funciona bien con Active Directory, lo usamos . Cuando utilizaba PHP 4.2.1 con OpenLDAP 2.1.2 estaba teniendo problemas con el enlace al servidor ldap. Me pareció que php estaba usando un protocolo más antiguo y añadió lo siguiente a la slapd. conf: Ver hombre slapd. conf para más información sobre el elemento de permitir en el archivo slapd. conf, esto es todo lo que sé. ) Cuando se trabaja con LDAP, vale la pena recordar que la mayoría de los servidores LDAP codifican sus cadenas como UTF-8. Lo que esto significa para las cadenas no ascii es que necesitará utilizar las funciones utf8encode y utf8decode al crear filtros para el servidor LDAP. Por supuesto, si usted puede su más simple evitar apenas usar los caracteres del non-ascii pero para la mayoría de los sitios los usuarios tienen gusto de ver sus juegos de caracteres nativos extraños incluyendo umlauts etc. Si usted acaba de conseguir. Caracteres donde usted está esperando no-ascii, entonces usted puede ser que sólo tenga que actualizar su versión de PHP. A continuación se muestra un ejemplo de búsqueda de directorio activo en w2k. El directorio activo requiere una cuenta de usuario que tenga permisos para buscar en el árbol. / Los siguientes valores se utilizan para el ejemplo: 1. Dominio microsoft 2. Servidor inestable 3. Usuario bgates 4. Contraseña iloveopensource / // Obtener el valor de nombre para buscar desde el formulario enviado. If (isset (HTTPGETVARSname)) nombre HTTPGETVARSname ldapserver ldap: //unstable. microsoft authuser bgatesmicrosoft authpass iloveopensource // Establece la base dn para buscar en todo el directorio de microsoft. Basedn DCmicrosoft, DCcom / filtrar la búsqueda de todas las personas en el árbol de Microsoft que tienen un nombre que coincida con cualquiera de los siguientes atributos name, displayname o cn. // se conecta al servidor si ((connectldapconnect (ldap))) die (no se puede conectar al servidor ldap) if ((bindldapbind (connect, authuser, authpass) If ((searchldapsearch (connect, basedn, filter))) die (No se puede buscar en el servidor ldap) numberreturned ldapcountentries (connect, search) info ldapgetentries (connect, search) echo El número de entradas devueltas es. Número devuelto para (i0 iltinfocount i) echo El nombre es:. Nombre de visualización es:. Infoidisplayname0 echo El correo electrónico es:. Infoimail0 echo El número de teléfono es:. Infoitelephonenumber0 Para aquellos que tratan de hacer la autenticación LDAP con Lotus Domino NAB, lo siguiente ha funcionado para mí (basado en el ejemplo de win2k por webmasterautourdupc): ip localhost dnCNJoe Blo, OmyOrganization contraseña password if ((ldap ldapconnect (ip))) die (Could No se conecta al servidor LDAP) print conectada a ltbgtiplt / bgtltbr / gt si ((res ldapbind (ldap, dn, password))) die (No se puede enlazar a dn) imprimir usuario ltbgtdnlt / bgt authenticated. ltbr / gt sdn OmyOrganization filter Objectclass) print ejecutando la búsqueda. LtbgtDN: sdn Filtro: filterlt / bgtltbr / gt srldapsearch (ldap, sdn, filtro) info ldapgetentries (ldap, sr) imprimir infocount. Cuando se está autenticando en un servidor LDAP de Win2k, debe incluir el nombre de la persona que se autentica en el servidor en dn, es decir, cnadministrator, cnusers, dcserver, dcdomain, dccountry. LDAP database you use: ltphp res ldapbind ( ldap. dn. password ) gt So a full example would be: ltphp if (( ldap ldapconnect ( ltservergt. lt port gt))) die ( Could not connect to LDAP server ) dn cnadministrator, cnusers, dcmyserver, dccom, dcau password MyPassword if (( res ldapbind ( ldap. dn. password ))) die ( Could not bind to dn ) gt Then you do your list or search functions on the ldap database. Before anyone else wastes a day scratching their head wondering why they cant search Active Directory. I wasnt able to search on Active Directory until I did this (immediately after the ldapconnect): ldapsetoption(connect, LDAPOPTPROTOCOLVERSION, 3) I was able to ldapbind if I didnt set this option, but I kept receiving errors. Also note, I had to set the option BEFORE binding. LDAP Active Directory Last Logon (lastlogon). This took me an entire day to work out. If you want to get the last logon date from an active directory account, you have to convert it from AD time stamp to unix time stamp. Once youve got a unix time stamp, PHP can format it as a date. Here is the code to do it: dateLargeIntinfoilastlogon0 // nano seconds (yes, nano seconds) since jan 1st 1601 secsAfterADEpoch dateLargeInt / (10000000) // seconds since jan 1st 1601 ADToUnixConvertor((1970-1601) 365.242190) 86400 // unix epoch - AD epoch number of tropical days seconds in a day unixTsLastLogonintval(secsAfterADEpoch-ADToUnixConvertor) // unix Timestamp version of AD timestamp lastlogondate(d-m-Y, unixTsLastLogon) // formatted date If you bind anonymousely to a Windows 2003 Server (Active Directory) and you perform a ldapsearch you will get an search operations error. You have to use a login and a password when binding I personally found alot of good information here: scit. wlv. ac. uk/

No comments:

Post a Comment