我已经在Server Fault上发布了这个内容,但由于它有一些编程方面,我也会在这里发布。
我有一个使用Forms身份验证的ASP.NET MVC 1.0应用程序。我们正在使用Windows Server 2008.我需要锁定网站,以便只有特定用户(在AD组中)才能访问该网站。不幸的是,当我将网站设置为不允许匿名用户并使用Windows身份验证时,由于网站和IIS的集成,它会将用户显示为以其域帐户登录,而不是允许他们通过表单登录验证
所以,我需要一个混合模式身份验证。我需要网站只能通过Windows身份验证访问,没有匿名用户,但一旦你进入,它只需要使用表单身份验证。我该如何以正确的方式做到这一点?
编辑:
这是一个澄清。该网站必须像这样工作。
问题是,当我将其设置为执行第1步时,它会在步骤2中使用您的Windows用户名。我不希望它这样做。
答案 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)