Windows身份验证IIS7

时间:2012-10-05 14:05:34

标签: asp.net iis-7 windows-authentication

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

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

按以下顺序启用所有三个可用提供商:

Negotiate:Kerberos
Negotiate
NTLM

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

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

1 个答案:

答案 0 :(得分: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用户所属的所有组,这样您就可以检查管理组是否在数组列表中,如果没有则重定向。

因此,请删除其他访问拒绝/允许,并使用它们是否在管理员组中来确定访问权限。

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

<system.webServer>
...etc
  <security>
...etc
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...etc
  </security>
...etc
</system.webServer>