0

我正在编写一个 VBScript 文件来获取当前登录的用户名和电子邮件地址。一些解决方案需要硬编码用户名/密码来执行 LDAP 搜索,而另一些则不需要。

每种方法的优缺点是什么?

选项 1:没有 LDAP 用户名/密码

Set objSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName) ' Currently logged in User
Response.Write("Email: " & objUser.mail)

选项 2:硬编码 LDAP 用户名/密码

strUsername = split(Request.ServerVariables("LOGON_USER"),"\")(1)

Set rootDSE = GetObject("LDAP://RootDSE")
Set oConn = CreateObject("ADODB.Connection")

sDomainContainer = rootDSE.Get("defaultNamingContext")
oConn.Provider = "ADSDSOObject"
oConn.properties("user id") = sLdapReaderUsername
oConn.properties("password") = sLdapReaderPassword
oConn.Open "ADs Provider"

sQuery = "<LDAP://" & sDomainContainer & ">;(sAMAccountName=" & strUsername & ");adspath,mail,displayName,sAMAccountName;subtree"
Set userRS = oConn.Execute(sQuery)

If NOT userRS.EOF AND NOT err Then Response.Write(userRS("mail"))
4

1 回答 1

1

这取决于您的 LDAP 服务器的配置方式。通常它们被配置为允许匿名搜索不访问任何私有属性的用户,例如只返回没有任何属性的 DN。然后您使用该 DN 和密码“绑定”,并建立身份验证;然后您可以访问您自己(用户)的所有属性,例如“Hi Jim”等。

于 2012-11-07T00:48:56.760 回答