Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Bind/Autenticazione con LDAP
venerdì 23 aprile 2010 - 14.40
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
ven 23 apr 2010 - 14:40
Ciao a tutti
...in questa bella giornata di pioggia sono alle prese con il protocollo LDAP...uao!
Ho un problema con il bind di un utente su un LDAP.
Posto il codice e sotto scrivo il problema:
Public Function IsAuthenticated(ByVal domain As String, ByVal username As String, ByVal pwd As String) As Boolean
'-------------Percorso con utente, password, autenticazione anonimi -----------
Dim entry As DirectoryEntry = New DirectoryEntry("LDAP://ldap-test2/o=...............", "", "", AuthenticationTypes.Anonymous)
Try
'Bind to the native AdsObject to force authentication
Dim obj As Object = entry.NativeObject
'Imposto la ricerca con l' utente inserito
Dim search As DirectorySearcher = New DirectorySearcher(entry)
Dim u As String = username
search.Filter = "(&(uid=" & u & ")
search.PropertiesToLoad.Add("uid") 'ID
search.PropertiesToLoad.Add("givenname") 'Nome
search.PropertiesToLoad.Add("cn") 'Cognome e Nome
Dim result As SearchResult = search.FindOne()
If (result Is Nothing) Then
Return False
End If
'Del percorso dell' utente trovato mi costruisco il DN (con uid= o con cn=)
Dim IE As Integer = InStr(result.Path, "uid") + 3
Dim dn As String = "cn=" & Right(result.Path, result.Path.ToString.Length - IE)
'-------------- Fine ricerca con username, pwd e auth anonimo --------------
'-------------------------- Tentativo di bind con credenziali -------------------
Try
Dim ldap As System.DirectoryServices.Protocols.LdapConnection = New System.DirectoryServices.Protocols.LdapConnection("LDAP://ldap-test2")
ldap.SessionOptions.SecureSocketLayer = True
ldap.AuthType = AuthType.Basic
'Passo il dn dell' utente (es. uid/cn=luca, ou=ufficio, o=regione, dc=stato, dc=it)
Dim creds As New NetworkCredential(dn, pwd)
ldap.Bind(creds) '<----- va sempre in errore dando poi come messaggio di eccezione "Server LDAP non disponibile"
'Mi piacerebbe arrivare qui per avere poi modo di sapere se il bind è andato a buon fine o no....:-)
return Bind
Catch ex As System.DirectoryServices.Protocols.LdapException
MsgBox("Errore: " & ex.Message)
Return False
End Try
'-------------------------
Questo è il codice.
Praticamente riesco a collegarmi in anonimo senza username e password, riesco a trovare l' utente che cerco e ottenere il suo percorso, però se cerco (anche in altri modi utilizzando anche nuovamente il DirectorySearcher) ad eseguire il bind con le credenziali mi da sempre l' errore SERVER LDAP NON DISPONIBILE!
Ho provato a settare la porta nel percorso ldap, a togliere l' SSL...sembra che si connetta solo in anonimo!
Questo è la parte aggiunta per l' autenticazione LDAP al mio web.config
<authentication mode="Forms">
<forms loginUrl="logon.aspx" name="adAuthCookie" timeout="60" path="/">
</forms>
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
<identity impersonate="true"/>
Cosa sbaglio?
Grazie mille
--
AirLainz
somamoy32
Profilo
| Newbie
2
messaggi | Data Invio:
lun 26 lug 2010 - 14:37
Salve! Io ho lo stesso problema ma in C#!
Mi potresti dire,per favore, se hai risolto e se si come?
Ti ringrazio anticipatamente,
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
lun 26 lug 2010 - 14:43
Ciao...putropop non sono risucito...per ora ho abbandonato ma sicuramente sarà una cosa sulla quale prima o poi dovro tornarci su.
Se dovessi riuscire te lo scrivo....se riesci a trovare come fare lo scriveresti pure tu?
Ciao
--
AirLainz
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
lun 26 lug 2010 - 14:47
Ah no...pensavo fosse il mio ultimo post. Mi son fermato qui..autenticazione semplice, senza pero SSL
Dim creds As New NetworkCredential
Dim entry As DirectoryEntry = New DirectoryEntry("LDAP://ldap-test2/o=............", "", "", AuthenticationTypes.Anonymous)
Dim LdapConnection As System.DirectoryServices.Protocols.LdapConnection
Try
Dim obj As Object = entry.NativeObject
Dim search As DirectorySearcher = New DirectorySearcher(entry)
Dim applicativo As String = "posta"
search.Filter = "(&(uid=" & sID & ")(progAllowed=" & applicativo & ")(!(shadowExpire=*))" & _
"(!(passwordExpired=1))(objectClass=auslAccount)(objectClass=shadowAccount))"
search.PropertiesToLoad.Add("uid") 'ID
search.PropertiesToLoad.Add("givenname") 'Nome
search.PropertiesToLoad.Add("cn") 'Cognome e Nome
Dim result As SearchResult = search.FindOne()
If (result Is Nothing) Then
Return False
End If
'Tengo il Dn cancellando il percorso dell' host
Dim IE As Integer = InStr(result.Path, "uid") - 1
Dim dn As String = Right(result.Path, result.Path.ToString.Length - IE)
creds.UserName = dn
creds.Password = sPassword
Catch ex As Exception
Me.LabelAccount.Text = "Errore: " & ex.Message
Return False
End Try
'---------------------------- BIND SEMPLICE -------------------------
Try
'++++++Con Credenziali++++++
LdapConnection = New System.DirectoryServices.Protocols.LdapConnection(New LdapDirectoryIdentifier("ldap-test2:389", True, False))
LdapConnection.SessionOptions.ProtocolVersion = 3
LdapConnection.AuthType = AuthType.Basic
LdapConnection.Bind(creds)
LdapConnection.Dispose()
Return True
'++++Anomimo++++'
'LdapConnection = New System.DirectoryServices.Protocols.LdapConnection(New LdapDirectoryIdentifier("ldap-test2:389", True, False))
'LdapConnection.SessionOptions.ProtocolVersion = 3
'LdapConnection.AuthType = AuthType.Anonymous
'LdapConnection.Bind()
'LdapConnection.Dispose()
'SearchRequest.Scope = System.DirectoryServices.Protocols.SearchScope.Base
'SearchRequest.DistinguishedName = ldapPath
Catch ex As Exception
Me.LabelAccount.Text = "Errore: " & ex.Message
Return False
End Try
'-------------------------- fine BIND SEMPLICE -----------------------
Fammi sapere se devi e riesci con certificati SSL.
Ciao
--
AirLainz
somamoy32
Profilo
| Newbie
2
messaggi | Data Invio:
lun 26 lug 2010 - 14:55
Te lo farò sapere senz'altro!
Grazie lo stesso
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
lun 26 lug 2010 - 14:58
ok, grazie, spero che almeno il mio ultimo post ti sia servito.
ciao
--
AirLainz
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !