Buscando por los foros encontré un código asp para hacer login validando contra LDAP. La página desde la que se ejecuta el código funciona perfectamente...
Para poderlo reutilizar en otras aplicaciones, quiero meter dicho codigo en una funcion de ASP, y llamarla cuando la necesite desde otras páginas. Tengo el típicofichero 'funciones.asp' con varias de ellas...
Pero algo debo hacer mal al convertir el código mencionado en una 'public function', porque cuando la llamo desde mi página, la función da siempre valor '0' (es decir, valor de incorrecto).
el código originario -que ya digo que funciona cuando va sólo en una página propia- es el siguiente: (quito la parte html, y dejo solo los que va entre <% %>)
Código asp:
Ver original
<% strUsername = "MiUser" strpassword = "Mipassw" domainname = "MIDominio" on error resume next Set objDomain = GetObject ("GC://rootDSE") objADsPath = objDomain.Get("defaultNamingContext") Set objDomain = Nothing Set objConnection = Server.CreateObject("ADODB.Connection") objConnection.provider ="ADsDSOObject" objConnection.Properties("User ID") = domainname+"\" + strUsername objConnection.Properties("Password") = strpassword objConnection.open "Active Directory Provider" Set objCommand = CreateObject("ADODB.Command") Set objCommand.ActiveConnection = objConnection objCommand.CommandText ="select cn FROM 'GC://"+objADsPath+"' where sAMAccountname='"+strUsername+"'" Set objRS = objCommand.Execute If Err.Number <> 0 Then ldap = 0 Response.write("Usuario o contraseña incorrecto") Else ldap = 1 Response.write("Usuario o contraseña logado correctamente") End If RESPONSE.WRITE("<P>")& LDAP &"<p>" %>
Pues bien, con este código, reescibo la siguiente función... que no funciona (y no funciona aunque le ponga los valores 'a pedal' y no sacados del form...):
Código asp:
Ver original
PUBLIC FUNCTION ValidaLdap(strUsername,strpassword,domainname) on error resume next Set objDomain = GetObject ("GC://rootDSE") objADsPath = objDomain.Get("defaultNamingContext") Set objDomain = Nothing Set objConnection = Server.CreateObject("ADODB.Connection") objConnection.provider ="ADsDSOObject" objConnection.Properties("User ID") = domainname+"\" + strUsername objConnection.Properties("Password") = strpassword objConnection.open "Active Directory Provider" Set objCommand = CreateObject("ADODB.Command") Set objCommand.ActiveConnection = objConnection objCommand.CommandText ="select cn FROM 'GC://"+objADsPath+"' where sAMAccountname='"+strUsername+"'" Set objRS = objCommand.Execute If Err.Number <> 0 Then ldap = "0" 'Response.write("Usuario o contraseña incorrecto") Else ldap = "1" 'Response.write("Usuario o contraseña logado correctamente") End If 'RESPONSE.WRITE("<P>")& LDAP &"<p>" ValidaLdap=ldap end function
Al incio de mi página donde uso la función va el include, ya para llamarla hago un
response.write "pasa: "&ValidaLdap(MiUser,MiPassw,MiDominio)
en donde, todoas las variables están perfectamente válidas...
y no se que hago mal...
Gracias por contestar!!!