我遇到了 LDAP 的问题,它有点奇怪。我的 Web 服务器是 IIS7.5(windows server 2008 R2)。其配置为使用 Windows 身份验证。我在下面粘贴了我的asp页面。
Web浏览器为IE8,已将网站添加到Intranet区域并启用发送,如果Intranet区域在安全选项卡->自定义级别中启用用户详细信息。在高级选项卡中启用了集成 Windows 身份验证。
一切正常 20 分钟(会话时间设置和其他默认超时设置为 20 分钟)。20 分钟后,我得到了 ASP 运行时错误。其中表示不支持对象 objUser 的方法或属性 memberOf。当我得到以下错误时,我将身份验证类型更改为基本身份验证。它提示输入 Windows 凭据并且工作正常。之后,我再次恢复到 Windows 身份验证。它可以工作一段时间。
不确定 IIS7.5 id 是否配置了启用基本身份验证和 IE8 配置如上,仍然为什么提示输入 windows 凭据。虽然 Windows 身份验证模式不会提示输入凭据,但它可以正常工作,但在一段时间内。谁能解释我为什么会出现这种奇怪的行为以及解决此问题的解决方案?
<%@ LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
Dim oADSysInfo
Dim objUser
Dim strGroupData
Dim strUserDN
Dim arrGroups
Dim strGroup
Dim wsObject
Dim netSys
Dim strUsrDomain
strGroupData = ""
Set wsObject = CreateObject("WScript.Shell")
Set netSys = CreateObject("WScript.Network")
strUsrDomain = netSys.UserDomain
Set oADSysInfo = CreateObject("ADSystemInfo")
If err.number <> 0 Then
'getLDAPGroupInfo = strGroupData
'wsObject.popup("Error"& e.decription)
'Exit Function
End If
strUserDN = oADSysInfo.UserName
Set objUser = GetObject("LDAP://"& strUserDN)
arrGroups = objUser.memberOf
If IsEmpty(arrGroups) Then
'Wscript.Echo "Member of no groups"
ElseIf (TypeName(arrGroups) = "String") Then
'Wscript.Echo "Member of group " & arrGroups
strGroupData = arrGroups
Else
For Each strGroup In arrGroups
strGroupData = strGroupData & "," & strGroup
Next
'strGroupData = arrGroups
End If
Response.Write(strGroupData)
%>