Jag har googlat sönder tangentbordet, kliat slut på skägget och eftersom jag är korthårig så har jag inget hår att slita i längre.
Vad jag försöker göra är att göra en inloggning i klassisk asp som ska verifiera användare mot en OpenLDAP-server (inte Active-Directory eller något windows-grejs alls för den delen).
Närmaste jag kommit är denna kod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>LDAP Authentication Test</title>
</head>
<body>
<%
dim submit
dim UserName
dim Password
UserName = "användarnamn"
Password = "lösenord"
Domain = "server:port"
submit = request.form("submit")
If submit = "Authenticate" then
UserName = request.form("UserName")
Password = request.form("Password")
Domain = request.form("Domain")
result = AuthenticateUser(UserName, Password, Domain)
If result then
response.write "<h3>Authentication Succeeded!</h3>"
Else
response.write "<h3>Authentication Failed!</h3>"
End If
end if
response.write "<hr><form method=post>"
response.write "<table>"
response.write "<tr>"
response.write "<td><b>Username: </b></td><td><input type=""text"" name=""UserName"" value=""" & UserName & """ size=""30""><br><small>Enter as ""DOMAIN\UserName"" or ""UserName@sub.domain.com"" or ""\UserName"" in a single domain environment</small></td>"
response.write "</tr>"
response.write "<tr>"
response.write "<td><b>Password: </b></td><td><input type=""password"" name=""Password"" value=""" & Password & """ size=""30""></td>"
response.write "</tr>"
response.write "<tr>"
response.write "<td><b>AD Domain: </b></td><td><input type=""text"" name=""Domain"" value=""" & Domain & """ size=""30""><br><small>Enter the AD Server FQDN, IP Address, or DN<br>Examples: ""adserver1.ourdomain.com"" or ""192.168.1.150"" or ""192.168.1.150/dc=adserver1,dc=ourdomain,dc=com""</small></td>"
response.write "</tr>"
response.write "<tr>"
response.write "<td> </td><td><input name=""submit"" type=""submit"" value=""Authenticate""></td>"
response.write "</tr>"
response.write "</table>"
response.write "</form>"
response.end
function AuthenticateUser(UserName, Password, Domain)
dim strUser
' assume failure
AuthenticateUser = false
strUser = UserName
strPassword = Password
strQuery = "SELECT cn FROM 'LDAPS://" & Domain & "' WHERE objectClass='*'"
set oConn = server.CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOOBJECT"
oConn.Properties("User ID") = strUser
oConn.Properties("Password") = strPassword
oConn.Properties("Encrypt Password") = true
oConn.open "DS Query", strUser, strPassword
set cmd = server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = oConn
cmd.CommandText = strQuery
'on error resume next
set oRS = cmd.Execute
if oRS.bof or oRS.eof then
AuthenticateUser = false
Response.Write False
else
AuthenticateUser = true
Response.Write True
end if
oConn.close
set oRS = nothing
set oConn = nothing
end function
%>
</body>
</html>
Som genererar detta vackra felmeddelande:
Provider error '80040e37'
Table does not exist.
ldaptest2.asp, line 73
Det borde vara en path också, inte bara vilken server
Provade exemplet därifrån, och la på en path också men får fortfarande samma fel (tabellen finns inte).
Största problemet är väl att det mesta man hittar är för att hämta data ifrån en AD-server, verkar inte vara någon som fått det att fungera med tex OpenLDAP mha "native asp". Finns komponenter att köpa, men det är inte riktigt ett alternativ eftersom det ska upp på ett webhotell senare.
Lutar dessvärre åt att det får bli ett API i php för att hantera inloggningen, och sen få över informationen tillbaks till asp-scriptet. Men det känns så fult :P
289 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e