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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Matthias (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für Eure Unterstützung!

werde das ausprobieren und dann Rückmelden.

von Matthias (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
50c schrieb:
> ICMP ist der Teil von IP

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

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


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht lesenswert
Windows-Server reagieren per Default nicht auf Ping.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.