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

Ska*_*inz 6 vbscript ldap active-directory

我知道使用具有显式凭据的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
Run Code Online (Sandbox Code Playgroud)

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

Har*_*wok 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) 
Run Code Online (Sandbox Code Playgroud)

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

要指定其他credentails,则需要更换GetObjectOpenDSObject

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) 
Run Code Online (Sandbox Code Playgroud)