2010-01-20 24 views
6

Estoy trabajando en un complemento para uno de nuestros productos (un RMS) que permitirá a los clientes importar información de los empleados almacenados en su directorio LDAP en el correspondiente registro Persona en nuestra aplicación.¿Es Active Directory realmente compatible con LDAP?

Nuestro RMS permite Persona registros para tener varios nombres y direcciones (es un sistema de seguridad pública: esta función es para apoyar a personas con AKA y múltiples direcciones conocidas). Debido a la naturaleza del software, creemos que sería muy útil extraer múltiples nombres y direcciones de LDAP si el servidor LDAP lo admite.

Tenía la impresión de que el Directorio Activo soportaría esto, pero no parece en absoluto. Mirando RFC 2256, Secciones 5.41 y 5.42, por ejemplo, parece obvio que givenName es un campo multivalor (es decir, la sintaxis no especifica SINGLE-VALUE, y RFC 2252 establece que "multivalor" es el valor predeterminado). Lo mismo vale para cn, sn, streetAddress, y casi cualquier otro atributo "estándar" que me moleste en buscar.

de Microsoft own documentation parece sugerir que están en conformidad con RFC 2256:

Actualmente, Windows 2000 Active Directory alcanza el cumplimiento LDAP a través del apoyo de los siguientes RFC.

[RFC 2256 aparece a continuación, entre los diversos RFC "compatibles", bajo el título "Requisitos Básicos de LDAP - RFC 3377"]

RFC 3377 Unidos que el RFC 2256 es de hecho parte de una colección de 8 de RFC que juntos comprenden la especificación técnica completa para LDAPv3.

Estoy confundido: no seguiría la sintaxis propuesta real para atributos estándar como givenName et al. constituyen "incumplimiento"?

Además, ¿alguien tiene una lista definitiva de las diferencias entre conectarse y consultar Active Directory frente a otros servidores de directorio (OpenLDAP, eDirectory, etc.)? Esta es una aplicación VB6, así que he estado usando el proveedor ADODB ADSDSOObject. Inicialmente, pensé que podría simplemente escribir el mismo código para cualquier servidor de directorio y hacerlo funcionar siempre que use atributos estándar, pero obviamente si el mismo atributo se define como valor único en algunas implementaciones y valor múltiple en otras, Tendré que escribir código para manejar ese escenario.

Estoy empezando a preguntarme si esta es una razón por la que muchas aplicaciones que tienen "integración LDAP" de algún tipo normalmente tienen una página de configuración completamente separada para "Active Directory", y luego las configuraciones para "cualquier otro LDAP" servidor que no es Active Directory "...

+1

solo una cosa detesto más que LDAP, y eso es Lotus Notes –

+0

Hmm .. Supongo que "compatible" no es lo mismo que "cumplimiento total". –

+0

@Mitch Wheat: Si bien aún no he tenido el "placer" de usar Lotus Notes, a juzgar por todo lo que he escuchado y leído al respecto, creo que puedo decir que es una afirmación justa :-) –

Respuesta

2

El problema con el" cumplimiento "de las normas es que es raro que una entidad o pieza de software sea verdaderamente 100% compatible en todos los aspectos posibles. En cambio, en ausencia de algunas pautas o reglas, el uso de la frase "compatible" generalmente significa que la entidad implementadora piensa que el software satisface la carne de la especificación.

Por ejemplo, tome el nivel 2 de CSS. La mayoría de los navegadores actuales afirmarían ser "compatibles con CSS 2", pero no es el caso de que cada navegador implemente el 100% de la especificación.Sin embargo, los usuarios probablemente encontrarán que la experiencia de renderizado es aproximadamente igual para una fracción significativa de casos. Por lo tanto, el cumplimiento tiende a ser indicado por una combinación de:

  • las afirmaciones del implementador (por ejemplo, Mozilla emitir un comunicado diciendo que Firefox 3.5 es CSS 2 compatible)
  • una prueba de terceros (por ejemplo, las pruebas de ácido)

Aquí es más o menos lo mismo con "cumplimiento" AD y LDAP. El documento que enlazó alude a la ausencia de directivas de cumplimiento o conformidad, por lo que Microsoft ha adoptado una posición (razonable, de la OMI) de que "las declaraciones de los proveedores combinadas con las suites de pruebas de terceros son las alternativas más adecuadas". Básicamente, esto significa que si Exchange y otras entidades que reclaman el cumplimiento de LDAP pasan las pruebas que miden el cumplimiento con el estándar, entonces efectivamente son compatibles.

+0

Veo su punto, y CSS y los navegadores web en general son definitivamente un buen ejemplo de un problema similar. Supongo que estoy un poco confundido acerca de cómo esta decisión de diseño surgió en AD: tienes que definir explícitamente un atributo como "de valor único" cuando defines el esquema; el valor predeterminado es "multivaluado", y muy pocos atributos se definen realmente como SINGLE-VALUE en la especificación LDAP. No estoy diciendo que Microsoft lo haya hecho intencionalmente o con intenciones maliciosas, pero parece que tendrían que haber puesto un "esfuerzo" extra para hacerlo de la manera "incorrecta". Simplemente extraño, y un poco molesto ... –

+3

Restringe eso con el hecho de que los otros grandes jugadores en el mercado de LDAP parecen hacer las cosas de la manera correcta, o al menos implementar la especificación con más precisión que Microsoft. Recuerda los días "Esta página se ve mejor con Internet Explorer". –

+0

@John Feminella: en realidad me gusta la comparación de CSS. Al igual que con CSS; el cumplimiento no significa que no pueda haber errores, por lo que el cumplimiento estándar no es un sustituto de las pruebas.Pero "estándar implementado" significa "estándar o superconjunto de estándar implementado", no "subconjunto de estándar implementado". Al igual que en InternetExplorer, existe una diferencia entre "no implementado", implementado completamente no compatible con estándares y un error. Y si su navegador dice "Cumple con CSS 2", pero no implementa algunas características de CSS 2, significa que NO es "compatible con CSS 2". No me importa la reducida cantidad de testsuite. –

2

Desafortunadamente, Active Directory rompe muchas cosas de LDAP, y 'valor único' es solo una de ellas.

estoy empezando a preguntarse si esto es una de las razones por las que muchas aplicaciones que tienen la "integración LDAP" de algún tipo suelen tener una página de valores completamente separada de "Active Directory" ...

Absolutamente.

¿Alguien tiene una lista definitiva de las diferencias entre conectarse y consultar Active Directory frente a otros servidores de directorio (OpenLDAP, eDirectory, etc.)?

No he visto ninguno. Pero el esquema de Active Directory está bien documentado en MSDN, por lo que siempre puede verificar la diferencia.

Cuestiones relacionadas