在经典的ASP/VBScript应用程序中通过LDAP访问员工ID

在经典的ASP/VBScript应用程序中通过LDAP访问员工ID

问题描述:

我有一个较老的ASP/VBScript应用程序,我正在维护/升级,它当前使用旧的/折旧的方式收集配置文件信息 - 如下所示:在经典的ASP/VBScript应用程序中通过LDAP访问员工ID

strNTUser = Request.ServerVariables("AUTH_USER") 
strNTUser = replace(strNTUser, "\", "/") 
Set strNTUserInfo = GetObject("WinNT://"+strNTUser) 
'You get the idea' 

当我所需要的全部名称和描述,这很好。现在我需要访问一些额外的配置文件信息,但我需要使用LDAP而不是WinNT。我Google'd直到我是盲人,但对我的生活我似乎无法环绕通过LDAP连接并获得我需要的信息我的大脑。

什么我需要做的基础上,AUTH_USER获得头名,姓,和员工ID?

更新:我从一开始就ADSI或一些类似的接口将需要想通,但我显然是ADIdiot和我没有得到任何有用的提示 - 更不用说帮助 - 从什么我已经在MSDN或TechNet找到。更明确的帮助将是不错...

+0

4GuysFromRolla具有a pretty good article与ADSI,LDAP和ASP几个代码样本。 – Mxyzptlk 2009-05-22 16:12:42

我敢肯定,大概有这样做的一个小更有效的方式,但这里是我结束了使用后的一番搜索,试图代码,和咬牙切齿......

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' 

我会愉快地接受任何重构的代码,以及一个原因,我现在不得不降低,以该网站为“基本身份验证”这个工作。

作为一个方面说明,我试图硬编码尽量少,所以我可以把它返回到开源项目中,我从拿到的原代码。

您应该使用ADSI连接在这种情况下,目录提供商(LDAP)。 Here is an example与经典的ASP。