使用备用凭据使用VBscript安全地进行LDAP对象操作

时间:2011-03-12 20:07:00

标签: vbscript active-directory ldap

我知道使用带有显式凭据的ADsDSOobject连接到AD对象以读取属性,列表成员等。用于操作这些对象的GetObject(“LDAP // ...”)方法(添加组成员) ,改变属性等),但有没有办法用显式凭证操纵属性和成员资格?

我指的第一种方法就像......

Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
conn.Provider = "ADsDSOobject"
conn.Properties("User ID") = AD_Username
conn.Properties("Password") = AD_Password
conn.Properties("Encrypt Password") = True
conn.Open "Active Directory Provider"
Set cmd.ActiveConnection = conn

但据我所知,执行将用户添加到域组等任务的脚本示例都不能使用此方法。有办法以某种方式这样做吗?

1 个答案:

答案 0 :(得分:5)

在VBScript中,您经常使用ADSI将用户添加到组。以下是将用户添加到域组的示例代码

Set objUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")
Set objGroup = GetObject("LDAP://CN=group1,DC=fabrikam,DC=com")
objGroup.add(objUser.ADsPath) 

它工作正常,但它总是使用您当前的用户凭据。这是因为GetObject不允许您指定备用凭据。

要指定其他凭据,您需要将GetObject替换为OpenDSObject

Const ADS_SECURE_AUTHENTICATION = 1
Set openDS = GetObject("LDAP:") 

Set objUser = openDS.OpenDSObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com",
    "username", 
    "password",
    ADS_SECURE_AUTHENTICATION)

Set objGroup = openDS.OpenDSObject("LDAP://CN=group1,DC=fabrikam,DC=com",
    "username", 
    "password",
    ADS_SECURE_AUTHENTICATION)

objGroup.add(objUser.ADsPath)