| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何在搜索 Active Directory 时使用替代凭据?
如何在搜索 Active Directory 时使用替代凭据?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:06:18
问:

您好,脚本专家!如何在搜索 Active Directory 时使用替代凭据?

-- PT

答:

您好,PT。不知对此有何高见?本专栏的忠实读者(双方)都知道,我们通常喜欢解答涉及搜索 Active Directory 的问题。为什么呢?很简单:因为我们并非真正回答这些问题。而仅仅是挖空心思弄出一个脚本,然后并不解释该脚本的工作原理,而是告诉人们,要获取详细信息,请阅读由两部分组成的系列文章 Dude, Where’s My Printer?(英文)。如您所见,这样在办公室里度过一天将是多么美好而又轻松!

但是您的问题却不同:这对我们来说真是太不幸了,在我们关于搜索 Active Directory 的系列文章中,并未在任何地方提到过指定替代凭据。这意味着我们将不得不真正地回答这个问题了。真叫不公平:我们不仅得来工作,而且现在还要求我们呆在这里实际做点什么!

相信我们:这不是美国人的行事方式。

那我们就要和您做个交易:我们将回答您的问题,但仅仅集中于指定替代凭据的脚本部分。如果您需要有关代码其余部分的详细信息,或者需要有关搜索 Active Directory 的详细信息,请参阅由两部分组成的系列文章 Dude,我的打印机在哪儿?(英文)

伙计,要是每次我们说到这个的时候能得到一美元该多好啊。

下面的脚本将使用替代凭据来搜索 Active Directory:

Const ADS_SCOPE_SUBTREE = 2



Set objConnection = CreateObject("ADODB.Connection")

Set objCommand =   CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"



objConnection.Properties("User ID") = "fabrikam/kenmyer"

objConnection.Properties("Password") = "A2sXrco1Fq1#om!"

objConnection.Properties("Encrypt Password") = TRUE

objConnection.Properties("ADSI Flag") = 3



objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection



objCommand.Properties("Page Size") = 1000

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 



objCommand.CommandText = _

    "SELECT Name FROM 'LDAP://DC=fabrikam,DC=com' WHERE " _

        & "objectCategory='user'"  

Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst

Do Until objRecordSet.EOF

    Wscript.Echo objRecordSet.Fields("Name").Value

    objRecordSet.MoveNext

Loop

如我们所说,今天我们将集中讨论下面这四行代码,就是用于指定替代凭据的那四行代码:

objConnection.Properties("User ID") = "fabrikam/kenmyer"

objConnection.Properties("Password") = "A2sXrco1Fq1#om!"

objConnection.Properties("Encrypt Password") = TRUE

objConnection.Properties("ADSI Flag") = 3

请注意,仅当要以替代凭据进行搜索时才需要这四行代码;也就是说,仅当要使用登录到 Windows 时所使用的用户帐户以外的帐户绑定到 Active Directory 时才需要。如果要使用当前的登录凭据进行搜索,则您只需删除这四行代码,该脚本便可以正确运行。

正如您可能会提到的那样(对象引用 objConnection 是个该死的泄密者),这四行代码涉及 ADO(ActiveX 数据对象)Connection 对象的四个属性。属性 User IDPassword 应该是不言而喻的:它们只不过是绑定到 Active Directory 时所要使用帐户的用户名和密码。本例中,我们已使用 domain/user name 语法指定了 User ID。不过,我们还可将用户名指定为登录名本身(例如,kenmyer),或者指定为用户的 UPN(通用主体名称):kenmyer@fabrikam.com。这完全取决于您。

至于密码,出于教学目的,我们采用硬编码方式将该密码写入到脚本中。不过,不用说,这并非我们建议您采取的方式。相反,您可能应使该脚本在每次运行时提示您输入密码。如果不确定该怎么做,那么好吧,别担心:按照我们的老习惯,我们将仅指点您到别处去找答案。(就此而言,是指以前的一个关于提示输入密码以及屏蔽密码的“您好,脚本专家!”专栏。)

这样我们就只剩下两个属性要处理了。将 Encrypt Password 设置为 True 只不过是告诉脚本,在网络上发送密码时要对其进行加密;默认情况下,此值设置为 False。同时,ADSI Flag 属性是一个用于指定验证选项的 bitmask 属性。值 3 实际上是一个由两个单独属性组成的 bitmask 值:

常量

说明

ADS_SECURE_AUTHENTICATION

1

请求安全验证。设置此标志后,Active Directory 将使用 Kerberos,也可能是 NTLM,来验证客户端。

ADS_USE_ENCRYPTION

2

要求 ADSI 对网络上的数据交换使用加密。

可在 ADSI SDK 中找到有关 ADSI Flag 属性的详细信息。

这就是您需要做的一切:为这 4 个属性配置适当的值便可以了。

现在,如果您不介意,我们需要休息一下。归根结底,我今天工作时最不愿意做而又不得不做的还是工作!

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览