使用Windows身份验证在IIS7中使用Forms Auth锁定站点

时间:2009-11-02 17:02:08

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

我已经在Server Fault上发布了这个内容,但由于它有一些编程方面,我也会在这里发布。

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

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

编辑:

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

  1. 您转到该网址,会弹出一个Windows身份验证登录信息。您使用具有访问权限的域名登录。如果您没有访问权限,则会显示401错误。
  2. 如果您有权访问,则会访问该网站。但是,该网站不使用您的Windows身份验证用户名。它使用表单Auth。因此,您必须使用表单auth。
  3. 来感叹网站

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

2 个答案:

答案 0 :(得分:2)

这里的诀窍是更改身份验证的提供程序以使用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连接字符串感到厌烦,你可能会比我做的更多。


好吧,好像我回答了错误的问题。为了后人的缘故,我会留下这个,但你应该尝试为网站禁用匿名身份验证。

答案 1 :(得分:0)

我在这里找到了答案:

IIS7 and Authentication problems

缺点是,在IIS 7中,您不能像使用IIS 6那样进行双层身份验证。