0

我有一个 ASP.NET 动态数据站点,只有当前登录并在域上的管理员才能访问该站点。我希望网站能够根据用户的登录信息来判断用户是谁,并允许或拒绝访问,而无需质疑凭据。由于动态数据站点的性质,我想确定没有其他人能找到他们的方式,所以我想在 IIS 中而不是 web.config 中管理身份验证和授权。但无论我做什么,它都拒绝以管理员身份访问。

在 64 位 Windows Server 2008 R2 标准机器上使用 IIS7。单击该站点并进入身份验证时,我已禁用除 Windows 之外的所有模式。

所有三个可用的提供程序都按以下顺序启用:

Negotiate:Kerberos
Negotiate
NTLM

在授权中,我添加了一个拒绝规则来拒绝匿名用户,然后允许所有用户。最终会改变它以允许角色管理员,但一旦我开始工作,我就可以做到这一点。

我错过了什么?如果重要的话,Web 服务器、域控制器、页面所在的文件服务器都在同一个域中。

4

1 回答 1

1

您可能想要使用这段代码:

Public Function GetGroups() As ArrayList
    Dim groups As New ArrayList()
    For Each group As System.Security.Principal.IdentityReference In System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups
        groups.Add(group.Translate(GetType(System.Security.Principal.NTAccount)).ToString())
    Next
    Return groups
End Function

这将返回当前 Windows 用户所属的所有组,这样您就可以检查 admin 组是否在数组列表中,如果没有则重定向它们。

所以放弃其他访问拒绝/允许并使用它们是否在管理员组中来确定访问。

您需要确保配置文件中包含以下内容:

<system.webServer>
...etc
  <security>
...etc
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...etc
  </security>
...etc
</system.webServer>
于 2012-10-05T14:08:51.427 回答