Asp classic 在经典ASP/VBScript应用程序中通过LDAP访问员工ID
我有一个旧的ASP/VBScript应用程序,我正在维护/升级它,它目前正在使用旧的/折旧的方法收集配置文件信息,如下所示:Asp classic 在经典ASP/VBScript应用程序中通过LDAP访问员工ID,asp-classic,vbscript,ldap,Asp Classic,Vbscript,Ldap,我有一个旧的ASP/VBScript应用程序,我正在维护/升级它,它目前正在使用旧的/折旧的方法收集配置文件信息,如下所示: strNTUser = Request.ServerVariables("AUTH_USER") strNTUser = replace(strNTUser, "\", "/") Set strNTUserInfo = GetObject("WinNT://"+strNTUser) 'You get the idea' 当我只需要全名和描述时,这很好。现在我需要访问一些
strNTUser = Request.ServerVariables("AUTH_USER")
strNTUser = replace(strNTUser, "\", "/")
Set strNTUserInfo = GetObject("WinNT://"+strNTUser)
'You get the idea'
当我只需要全名和描述时,这很好。现在我需要访问一些额外的概要信息,但我需要使用LDAP而不是WinNT。我一直在谷歌上搜索,直到我失明,但就我的一生而言,我似乎无法通过LDAP连接并获取我需要的信息
我需要做什么才能根据AUTH_用户获取名字、姓氏和员工ID
更新:我从一开始就认为需要ADSI或类似的接口,但我显然是一个助手,从我在MSDN或TechNet上找到的任何东西中都没有得到任何有用的提示,更不用说帮助了。更明确的帮助会更好…在本例中,您应该使用它连接到目录提供程序(LDAP)。使用经典ASP。我相信可能有更有效的方法来实现这一点,但这是我在经过多次搜索、尝试和切齿后最终使用的代码
Dim strNTUser, strUser, strDN, strRootTDSE
Dim objRootDSE, objConnection, objCommand, objRecordSet, objUser, objNTUserInfo
strNTUser = Request.ServerVariables("AUTH_USER")
strUser = Mid(strNTUser,(instr(1,strNTUser,"\")+1),len(strNTUser))
Set objConnection = Server.CreateObject("ADODB.Connection")
Set objCommand = Server.CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
'objCommand.Properties("Page Size") = 1000'
objCommand.Properties("Searchscope") = 2 'ADS_SCOPE_SUBTREE
Set objRootDSE = GetObject("LDAP://rootDSE")
strRootTDSE = objRootDSE.Get("defaultNamingContext")
Set objRootDSE = Nothing
objCommand.CommandText = _
"SELECT distinguishedName FROM 'LDAP://" & strRootTDSE & "' " & _
"WHERE objectCategory='user' AND sAMAccountName = '" & strUser & "'"
Set objRecordSet = objCommand.Execute
If Not objRecordSet.BOF Then objRecordSet.MoveFirst
If Not objRecordSet.EOF Then
strDN = objRecordSet.Fields("distinguishedName").Value
End If
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing
Set objUser = GetObject("LDAP://" & strDN)
'I can now use objUser to get the details'
我很乐意接受任何重构的代码,这也是我现在必须将站点降低到“基本身份验证”的原因
顺便说一句,我已经尽可能少地硬编码,这样我就可以将其发送回我从中获得原始代码的开源项目。4GuysFromRolla有一篇非常好的文章,其中包含一些ADSI、LDAP和ASP的代码示例。