Authentication 登录用户';s通过LDAP的电子邮件地址:是否提供用于搜索LDAP的密码?

Authentication 登录用户';s通过LDAP的电子邮件地址:是否提供用于搜索LDAP的密码?,authentication,asp-classic,vbscript,ldap,basic-authentication,Authentication,Asp Classic,Vbscript,Ldap,Basic Authentication,我正在编写一个VBScript文件以获取当前登录的用户名和电子邮件地址。一些解决方案需要硬编码的用户名/密码来执行LDAP搜索,而其他解决方案则不需要 每种方法的优缺点是什么 选项1:无LDAP用户名/密码 选项2:硬编码LDAP用户名/密码 strUsername=split(Request.ServerVariables(“登录用户”),“\”(1) 设置rootDSE=GetObject(“LDAP://rootDSE”) 设置oConn=CreateObject(“ADODB.Conne

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

每种方法的优缺点是什么

选项1:无LDAP用户名/密码

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

strUsername=split(Request.ServerVariables(“登录用户”),“\”(1)
设置rootDSE=GetObject(“LDAP://rootDSE”)
设置oConn=CreateObject(“ADODB.Connection”)
sDomainContainer=rootDSE.Get(“defaultNamingContext”)
oConn.Provider=“ADSDSOObject”
oConn.properties(“用户id”)=sldaprederUserName
oConn.properties(“密码”)=sLdapReaderPassword
开放“广告提供商”
sQuery=“;(sAMAccountName=“&struername&”);adspath、mail、displayName、sAMAccountName;子树
设置userRS=oConn.Execute(sQuery)
如果不是userRS.EOF和noterr,那么Response.Write(userRS(“mail”))

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

我有一种预感,这与双跳问题有关,我真的在找人来证实这一点。例如,在域控制器上运行选项1可以通过IIS工作,但在域上的另一台服务器上运行它将不起作用,可能是由于双跳问题。根据我的经验,默认情况下通常禁用任意搜索。就像在ActiveDirectory和AD-LDS中一样,以及我使用过的大多数其他目录(为EUS配置的Oracle OID将是例外)。也许“无密码”实际上是“单点登录”或“模拟”。如何对用户进行身份验证?您有基本的身份验证标签。请确认您的ASP应用程序使用内置的IIS基本身份验证方法。
Set objSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName) ' Currently logged in User
Response.Write("Email: " & objUser.mail)
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"))