【问题标题】:Lock down a site using Forms Auth in IIS7 with Windows Auth通过 Windows Auth 在 IIS7 中使用 Forms Auth 锁定站点
【发布时间】:2009-11-02 17:02:07
【问题描述】:

我已经在Server Fault 上发布了这个,但由于它涉及到某种编程方面的问题,我也会在这里发布。

我有一个使用表单身份验证的 ASP.NET MVC 1.0 应用程序。我们使用的是 Windows Server 2008。我需要锁定该站点,以便只有某些用户(在 AD 组中)可以访问该站点。不幸的是,当我将站点设置为不允许匿名用户并使用 Windows 身份验证时,由于站点和 IIS 的集成,它显示用户以他们的域帐户登录,而不是允许他们通过表单登录授权。

所以,我需要混合模式身份验证。我需要该站点只能通过 Windows 身份验证访问,没有匿名用户,但是一旦您进入,它只需要使用表单身份验证。我该如何以正确的方式做到这一点?

编辑:

这里有一个澄清。该网站必须像这样工作。

  1. 您转到 URL,然后会弹出一个 Windows 身份验证登录。您使用具有访问权限的域帐户登录。如果您无权访问,则会显示 401 错误。
  2. 如果您有访问权限,您就访问了该站点。但是,该站点不使用您的 Windows 身份验证用户名。它使用表单 Auth。因此,您必须使用表单身份验证访问该站点。

问题是,当我将其设置为执行第 1 步时,它会在第 2 步中使用您的 Windows 用户名。我不希望它这样做。

【问题讨论】:

    标签: authentication iis-7 forms-authentication windows-authentication


    【解决方案1】:

    这里的诀窍是更改您的身份验证提供程序以使用 Active Directory,而不是将设置更改为 Windows。

    或者,使用以下提供程序的版本:

    <add
     name="AdProvider"
     type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
     connectionStringName="YourAd"
     applicationName="YourApp"
     enablePasswordReset="false"
      />
    

    使用以下连接字符串的一个版本:

    <add name="YourAd"
    connectionString="LDAP://[your DC]/OU=[your OU],DC=[your domain],DC=[your extension]"
    />
    

    授权方面,您有一些选择。如果它基于域组,那么您需要连接 azman。如果它是应用程序控制的,您需要将 AD 用户与数据库存储的角色对齐。

    PS:我很讨厌 LDAP 连接字符串,你可以用它做比我做的更多的事情。


    好吧,看来我回答错了问题。为了后人的缘故,我将保留它,但您应该尝试禁用该站点的匿名身份验证。

    【讨论】:

    • 该站点使用表单身份验证,并且无法更改。在 IIS6 中,您曾经能够保护站点对 Windows 身份验证的访问,然后在实际代码中使用表单身份验证。我需要这样做。
    • 编辑了回答仪式问题的答案。见上文。
    【解决方案2】:

    我在这里找到了答案:

    IIS7 and Authentication problems

    简而言之,在 IIS 7 中,您不能像使用 IIS 6 那样进行两层身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2021-12-02
      • 2018-03-23
      • 2012-03-08
      • 2022-12-09
      相关资源
      最近更新 更多