Forum: PC-Programmierung LDAP Verbindung mit Server überprüfen


von Matthias (Gast)


Lesenswert?

Hallo zusammen,

ich habe hier eine Client Applikation (Linux, in C/C++) entwickelt 
welche eine Authentifizierung auf einem LDAP Server macht.

Die Authentifizierung an sich läuft problemlos, was mir Probleme 
verursacht ist wenn keine Verbindung mit dem Server besteht (z.b. weil 
das Netzwerkkabel nicht angeschlossen ist).

ldap_init(..) funktioniert dann nämlich trotzdem, aber eine Abfrage zB. 
über ldap_search_ext_s oder ldap_bind_s(..) dauert ewig lange bevor sie 
in ein Timeout läuft (Die Timeouts setzen bringt hier irgendwie gar 
nix).

Meine Frage:

Kann man irgendwie schnell feststellen ob eine Verbindung zum 
LDAP-Server besteht?

Bei Bedarf kann ich morgen auch Code posten.

Danke,
Matthias

von Jens G. (jensig)


Lesenswert?

>Kann man irgendwie schnell feststellen ob eine Verbindung zum
>LDAP-Server besteht?

ping ...


>ldap_init(..) funktioniert dann nämlich trotzdem, aber eine Abfrage zB.

Ja, steht ja auch so in der LDAP-Beschreibung so drin:

http://www.openldap.org/software//man.cgi?query=ldap_init&sektion=3&apropos=0&manpath=OpenLDAP+2.4-Release

       ldap_open() opens a connection to an LDAP server and allocates an 
LDAP
       structure which is used to identify the connection and to 
maintain per-
       connection information.  ldap_init() allocates an  LDAP 
structure  but
       does  not  open  an initial connection.


Da gibt's paar Timeouts - vielleicht ist ja das richtige dabei:

http://www.openldap.org/software//man.cgi?query=ldap_set_option&sektion=3&apropos=0&manpath=OpenLDAP+2.4-Release

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

Erstmal mit 2x Ping (ICMP Echo + ICMP Reply) testen ob IP
erreichbar ist. (2x wegen ARP.)
Dann einfach einen zero-connect auf den Port machen.
Wenn der misslingt kannst Du das ldap-init auch lassen.

von Peter II (Gast)


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5027919:
> Erstmal mit 2x Ping (ICMP Echo + ICMP Reply) testen ob IP
> erreichbar ist. (2x wegen ARP.)

nicht in jedem netzt ist ICMP zugelassen. Ich halte es für nicht 
sinnvoll ping an irgendwelche Server zu senden.

von (prx) A. K. (prx)


Lesenswert?

Jens hat oben schon drauf gestupst:
1
LDAP_OPT_CONNECT_ASYNC
2
              Sets/gets the status of the asynchronous connect flag.   invalue
3
              should  either  be LDAP_OPT_OFF or LDAP_OPT_ON; outvalue must be
4
              int *.  When set, the library will call connect(2)  and  return,
5
              without  waiting  for  response.   This  leaves  the handle in a
6
              connecting state.  Subsequent calls  to  library  routines  will
7
              poll  for  completion  of  the connect before performing further
8
              operations.  As  a  consequence,  library  calls  that  need  to
9
              establish  a  connection  with  a  DSA do not block even for the
10
              network timeout (option LDAP_OPT_NETWORK_TIMEOUT).  This  option
11
              is OpenLDAP specific.

von Matthias (Gast)


Lesenswert?

Vielen Dank für Eure Unterstützung!

werde das ausprobieren und dann Rückmelden.

von Matthias (Gast)


Lesenswert?

Hallo zusammen,

habe mich jetzt dazu entschieden bei jeder Authentifizierung die 
Verbindung zum LDAP-Server mittels ldap_initialize() neu aufzubauen und 
danach wieder zu beenden.

Dies brachte für mich das zufriedenstellendste Ergebnis

Matthias

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> nicht in jedem netzt ist ICMP zugelassen. Ich halte es für nicht
> sinnvoll ping an irgendwelche Server zu senden.

Das ist mir herzlich egal.

ICMP ist der Teil von IP, der zur Diagnose und Kontrolle des
IP-Stacks implementiert ist.
Wer den ohne Not einfach ausschaltet ist ziemlich hirntot.

von 50c (Gast)


Lesenswert?

(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5034686:
> nicht in jedem netzt ist ICMP zugelassen. Ich halte es für nicht
> sinnvoll ping an irgendwelche Server zu senden.
>
> Das ist mir herzlich egal.
>
> ICMP ist der Teil von IP, der zur Diagnose und Kontrolle des
> IP-Stacks implementiert ist.
> Wer den ohne Not einfach ausschaltet ist ziemlich hirntot.

Warum, ein Ping ist ein Angriffsvektor mehr...

von 50c (Gast)


Lesenswert?

50c schrieb:
> ICMP ist der Teil von IP

...und nein, es ist nur ein Protokoll!

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> ...und nein, es ist nur ein Protokoll!

Eigentlich stand hier mal was.
Aber es ist mir zu doof auf so duemmliches Gekwake zu antworten.

von (prx) A. K. (prx)


Lesenswert?

Windows-Server reagieren per Default nicht auf Ping.

von (prx) A. K. (prx)


Lesenswert?

50c schrieb:
>> ICMP ist der Teil von IP
>
> ...und nein, es ist nur ein Protokoll!

ICMP ist ein obligatorischer Teil der TCP/IP Protokollfamilie.
Implementierung ist Pflicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.