2011-09-14 11 views
6

Prima di tutto vorrei dire che non conosco quasi nulla di LDAP e questa domanda è di natura più concettuale di ogni altra cosa. Poiché questo è un post lungo, ecco la domanda nella sua forma più semplice:È possibile esporre i dati "conformi" LDAP tramite un'API REST senza un server LDAP?

Come posso esporre i dati dei contatti in un database SQL Server esistente ai client LDAP nel modo più semplice possibile?

SCENARIO

L'organizzazione per cui lavoro ha messo a punto un sistema di CRM interna molto semplice - in realtà è più di un sistema di gestione dei contatti glorificato di CRM, ma pieno di informazioni di contatto comunque - e che ora vogliono la possibilità di esporre facilmente tutte le informazioni di contatto ad altri client desktop e mobili come Outlook e/o dispositivi iOS e mi è stato assegnato per capire come farlo.

La prima cosa che ho fatto è stata aprire Outlook e vedere che tipo di libri di indirizzi Internet possono essere aggiunti; in Outlook 2007, l'unica opzione che vedo è LDAP. Successivamente, ho esaminato un dispositivo iOS e supporta anche rubriche di indirizzi LDAP. Così, sembra che LDAP è ciò che è necessario per raggiungere questo obiettivo ...

ricerca di LDAP

Come detto all'inizio, so quasi niente di LDAP e la ricerca per questo scopo didn' t farmi molto lontano. Certamente non voglio configurare un intero server LDAP e non ho bisogno di protezione LDAP, ecc. (Almeno come ho capito, non lo faccio), tutto quello che devo fare è esporre le informazioni di contatto dal database CRM esistente "il modo LDAP".

Il consenso che mi sembra di vedere nella mia ricerca è installare un server LDAP come OpenLDAP e configurarlo per utilizzare SQL Server (cioè il database CRM esistente) come backing store esponendo così in modo efficace i record del database a LDAP clienti. Questo sembra troppo complicato e spero che esista un modo più semplice per esporre i record dei contatti in formato LDAP.

L'IDEA DI RIPOSO

L'idea che ho - che è alla ricerca come una causa persa - è quello di esporre i contatti di ciascun utente attraverso un semplice riposo (o di riposo-like) API che restituisce le informazioni di contatto nel LDAP modulo utilizzabile da Outlook, iOS e qualsiasi altro client/dispositivo che supporta LDAP.

L'obiettivo finale è quello di istruire gli individui nella mia organizzazione ad aprire le loro impostazioni del dispositivo iOS Outlook o e digitare un URI semplice come:

https://www.ourinternalcrm.com/{username}/contacts

Sto sprecando il mio tempo?

E 'anche lontanamente possibile e vale la pena investigare ulteriormente o mi manca l'intero punto di LDAP e il modo in cui i dati di esposizione nel modulo LDAP funzionano?

Se questo è possibile, qualcuno può aiutarmi a indicarmi la giusta direzione? Devo implementare tutto questo usando C# e (molto probabilmente) WCF.

risposta

3

LDAP è un protocollo in sé e non è su HTTP o un altro protocollo di servizio web.

Se si vuole sviluppare un server LDAP che sarebbe più complicato rispetto all'utilizzo di una tecnologia server LDAP esistente.

È possibile implementare un server ADAM (Active Directory Application Mode) ora chiamato Active Directory Lightweight Directory Services (AD LDS) e creare l'applicazione o un servizio di sincronizzazione per inviare i dettagli del contatto, eliminando così la necessità di crearne uno.

+0

Grazie per la risposta. Sono completamente d'accordo sul fatto che rotolare il mio server LDAP sarebbe eccessivamente complicato e questo non è l'obiettivo. Indagherò l'ADLDS, ma sto cercando di evitare due archivi di dati che immagino che finirei con questa rotta (da qui la tua menzione di un servizio di sincronizzazione). – sellmeadog

+0

Grazie Bernie. La tua risposta è stata la più vicina a "no" che è stata data, che, sfortunatamente, sembra essere la risposta corretta a questa domanda. – sellmeadog

0

Esiste già una specifica per questo chiamato DSML. È fondamentalmente un markup XML di un modello di dati LDAP, insieme alle operazioni LDAP e alla loro semantica. Alcuni dei server LDAP supportano questo fuori dalla scatola, o attraverso le librerie in quanto l'XML è utile anche come formato di interscambio.

+0

Se DSML viene restituito da un endpoint del servizio REST, i client LDAP sanno cosa fare con i dati, ovvero posso puntare Outlook a quell'endpoint e caricare una rubrica? – sellmeadog

+0

DSML non è certamente pervasivo, ma la maggior parte dei client non comunicherà comunque tramite LDAP al Web. Lo sottolineo soprattutto in termini di se si desidera mappare LDAP a qualcosa, quindi c'è già una rappresentazione XML là fuori che è possibile adottare. –

+1

DSML è un servizio basato su SOAP e quindi non è un endpoint del servizio REST. –

2

LDAP ha già una sintassi del filtro URL ben definita, basta usarlo. Vedi RFC 4516.

+0

Grazie per avermi segnalato questo. Sto cercando di trovare una soluzione che non richiede un server LDAP, ma può invece "falsificare" il server e solo esporre i dati in un server esistente nel modulo LDAP. – sellmeadog

+0

@crazyrabian Ma Outlook si aspetta che comunichi il protocollo LDAP a un servizio LDAP. Perché dovrebbe avere senso da un URL RESTful? – EJP

+1

Quello che sto scoprendo è che non ha senso. Ancora una volta, è stata posta la domanda senza una comprensione di LDAP e cercando di determinare se è possibile esporre i dati nel modulo LDAP senza un server LDAP. La risposta sembra essere un semplice "no" a cui sto bene, ma mi piacerebbe trovare un modo per condividere i dati di contatto esistenti con i clienti senza configurare e sincronizzare un server LDAP (o qualsiasi altro server per quella materia). Non sto più avventurando in questa tana del coniglio. – sellmeadog

0

Quindi, per chiarire, si sta tentando di esporre i dati che risiedono su un server LDAP Apache DS tramite REST, in cui l'API RESTFul risiede come servizio lato server su un altro server (Tomcat, Weblogic, ecc.)?

La parte interessante che ho trovato è che Apache LDAP ha una bella funzione di ricerca e recupero tramite un'API JAVA sul loro sito - molto intuitiva e facile da implementare. Ma ho lo stesso problema e non ho trovato una soluzione per l'integrazione di un'API REST per sputare i dati.

Alcuni problemi riscontrati sono che sembra esserci un problema quando si tenta di connettere un server Tomcat a un server LDAP Apache, in modo che i dati tramite un metodo @GET possano essere serviti.

Sarei lieto se qualcuno ha risolto questo problema di pubblicarlo, dal momento che non ci sono soluzioni ovunque sul web per questo.