Hola a tod@s; a ver si podeis ayudarme...
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 originalPUBLIC 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!!!