1

我们通过活动目录为 Intranet 站点设置了如下安全性。

首先,我们按部门(销售、会计等)设置安全组

其次,我们有一个用于 Intranet 站点的 AD 安全组,人们通过 NT 质询/响应登录。为此,我们称该组为“Intranet 用户”

在 Intranet Users 下,我添加了允许使用 Intranet 的部门。

因此,在 AD 中,您有 Intranet 用户,并且该组的成员是销售和会计。

在经典 ASP 中我需要做的是针对 Intranet 用户下的组对用户进行身份验证。

我挖出了一些我在其他地方使用过的旧代码,但我无法让它工作,除非我对这个主题的 Google-fu 非常糟糕(一种明显的可能性),否则我无法在经典 ASP 中找到正确的文档。

此代码将获取组,但如果它是用户而不是组,则只会枚举其中的对象。

bAuthUser = False
Set objGroup = GetObject("WinNT://DOMAIN/Intranet Users")
For Each objMember In objGroup.Members
    If objMember.Class = "User" Then
          If objMember.Name = Request.ServerVariables("AUTH_USER") Then bAuthUser = True
    End If
Next

如果安全组中有实际用户但组中没有用户,只有其他安全组,则上述代码有效。

我需要做的是遍历“Intranet Users”中的组,然后通过每个组中的用户进行身份验证。

我是在正确的轨道上还是完全不在?

提前致谢。

4

2 回答 2

1

您可以根据对象的 LDAP 路径查找对象,尽管在本文之前我还没有在 ASP 中这样做过,这看起来像是一个很好的起点,就像这个问题一样。

于 2012-06-04T22:45:30.667 回答
1

这取决于您正在寻找的功能。

如果目标是“每个人都可以访问此站点,但如果他们是 Intranet 用户,他们将获得此额外功能”,那么您所在的路径是正确的。

如果您只想说“只有 Intranet 用户可以访问我的站点”,那么您可以利用 IIS 的一个未记录的功能。如果您进入文件夹安全选项,并从 ACL 中删除通用帐户并将 Intranet Users 组添加到 ACL,如果经过身份验证的用户不在 Intranet Users 中,则 IIS 将引发 403 异常。

于 2012-06-04T17:23:22.050 回答