2009-05-05 53 views
4

我有一個較老的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

回答

4

我敢肯定,大概有這樣做的一個小更有效的方式,但這裏是我結束了使用後的一番搜索,試圖代碼,和咬牙切齒......

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' 

我會愉快地接受任何重構的代碼,以及一個原因,我現在不得不降低,以該網站爲「基本身份驗證」這個工作。

作爲一個方面說明,我試圖硬編碼儘量少,所以我可以把它返回到開源項目中,我從拿到的原代碼。

1

您應該使用ADSI連接在這種情況下,目錄提供商(LDAP)。 Here is an example與經典的ASP。

相關問題