2009-07-21 11 views
6

Se qualcuno ha una storia simile, si prega di inviare i dettagli di seguito!Perché l'autenticazione con LDAP con DirectoryEntry genera in modo intermittente COMException (0x8007203A): "Il server non è operativo"?

Sto costruendo un sito Web ASP.NET che deve supportare l'autenticazione contro LDAP.

Su Windows, l'autenticazione LDAP può essere eseguita tramite Active Directory (non sono esperto, ma AD sembra essere semplicemente un particolare tipo di LDAP). Non controllo i server AD e/o LDAP.

ho provato vari metodi di autenticazione, ma ho scelto di utilizzare un unico DirectoryEntry per tentativo di autenticazione:

using (DirectoryEntry de = new DirectoryEntry(ldapPath, ldapUsername, password, AuthenticationTypes.ServerBind)) { 
    try { 
     // Bind to the native AdsObject to force authentication. 
     object obj = de.NativeObject;//not IDisposable 
    } catch(... 

Recupero del NativeObject provoca un COMException se qualcosa va storto di sorta, ad esempio se la autenticazione fallita, l'eccezione è qualcosa come "Logon failure: sconosciuto nome utente o password errata", e se il server ldap è irraggiungibile o scade, qualcosa del tipo "Il server non è operativo."

Questo funziona, fondamentalmente, ma dopo un numero variabile di giorni, sempre iniziando la prima cosa al mattino, otteniamo "Il server non è operativo". fino al riavvio di IIS. Ovviamente non si tratta di una soluzione a lungo termine, ma per quanto posso dire che l'errore è relativo all'oggetto Com sottostante DirectoryEntry, non è una soluzione facile da risolvere.

Thisproblemisn'tneworunknown. Alcune persone hanno superato il supporto di Microsoft con risultati misti; fondamentalmente le risposte sembrano venire a "prendere il tuo percorso ldap e creare alcune alternative equivalenti e forse una di queste funzionerà". Ogni volta che provi, o certo, non saprai per qualche giorno se ha effettivamente funzionato, e finché non verrà trovata una soluzione reale, torneremo a "riavviare i server Windows ogni notte".

Per cominciare, ho provato i percorsi LDAP nel formato

* "LDAP://server.uri:636" 
* "LDAP://insecure.server.uri:389" 
* "LDAP://server.uri:636/cn=username,ou=staff,o=myOrganisation,c=org" 

sempre con un nome utente con il seguente schema:

* "cn=username,ou=staff,o=myOrganisation,c=org" 

Tutti questi metodi di lavoro inizialmente, ma non riescono dopo un numero variabile di giorni (e iniziare a lavorare dopo un reset di IIS). Il server esegue IIS6 su win 2k3.

Se qualcun altro ha questi problemi, si prega di postare qui sotto, e forse alla fine troveremo un modello con cui lavorare o avere un numero sufficiente di esempi per convincere Microsoft a risolvere questo problema.

+0

E 'possibile questo errore è di vincere le opzioni di clustering di 2k3 - abbiamo migrato a un sistema a server singolo non cluster e gli ultimi giorni sono stati senza problemi. –

+0

Cosa era raggruppato? Il server che esegue la tua app o il server che esegue AD? –

+0

Il server che esegue l'app. Il server LDAP era in realtà una macchina non Windows in esecuzione da qualche parte all'esterno: non sono sicuro della sua configurazione. Inoltre, sembra che i problemi si verifichino anche per le "connessioni" UDP costruite manualmente, suggerendo che si tratta di una cosa di basso livello. –

risposta

5

Anche se non riesco a individuare con precisione la causa di questo problema, sembra essersi fermato dopo la migrazione a un server non in cluster.

Ci sono altri fatti di strano in questo bug:

  • Riavvio del processo host asp.net non è sufficiente a risolvere il problema. Questo è strano; ci si aspetta che il sistema operativo rilasci forzatamente le risorse in caso di morte del processo
  • Il riavvio del servizio IIS non rilascia le risorse (le porte UDP).netstat rivela che le porte sembrano libere, ma tutte le porte aperte sono effettivamente aperte dal processo n. 4: il processo di sistema.
  • Killing IIS (ad esempio tramite il gestore IIS) fa rilascia le porte UDP e quindi l'autenticazione funziona di nuovo.

Tutto sommato, sembra molto simile a un problema di driver o kernel in win2k3 con cluster attivato e non un problema correlato a .NET.

Quindi, se qualcun altro inciampa su un problema simile, controlla se il clustering è abilitato - potrebbe farti risparmiare settimane di mal di testa.

0

Ho letto qualcosa sul controllo con NETSTAT e controllo degli stati delle connessioni attive. un multiplo TIME ATTESA potrebbe indicare un problema con il reindirizzamento delle porte. Tuttavia, sto ricevendo lo stesso errore negli ultimi 3 giorni. Ho chiesto all'amministratore di rete di modificare i miei permessi, e anche quello non ha aiutato. L'articolo discutere di questo in ulteriori dettagli: C# .NET Application looses Connection to the Active Directory

+0

http://forums.techarena.in/active-directory/943180.htm non trovato – Kiquenet

Problemi correlati