webForumDet fria alternativet

Autentisering mot OpenLDAP

ASP

4 svar · 1 799 visningar · startad av Hulth

Medlem sedan juni 2001272 inlägg
Frågan#1

Tjo.

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:&nbsp;</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:&nbsp;</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:&nbsp;</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>&nbsp;</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

Anyone?

Medlem sedan jan. 20023 327 inlägg
#2

Jag tror att tabellnamnet är felaktigt. Testa att ändra från LDAPS till LDAP.

Ändra följande rad:

strQuery = "SELECT cn FROM 'LDAP[B]S[/B]://" & Domain & "' WHERE objectClass='*'"

Till:

strQuery = "SELECT cn FROM 'LDAP://" & Domain & "' WHERE objectClass='*'"
Medlem sedan juni 2001272 inlägg
#3

Nope, servern kör SSL, och då verkar det som det är LDAPS som gäller.

Bara LDAP ger följande:

Active Directory error '80040e37'

The server is not operational.

ldaptest2.asp, line 73
Medlem sedan juli 2003555 inlägg
#4

Känns som att uri:n inte är komplett, ta en titt på t.ex. http://support.microsoft.com/kb/187529

Det borde vara en path också, inte bara vilken server

Medlem sedan juni 2001272 inlägg
#5

onkelborg skrev:

Känns som att uri:n inte är komplett, ta en titt på t.ex. http://support.microsoft.com/kb/187529

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
145 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
150 ms — ändringar (db)