是否可以在ASP.NET站点中同时具有表单身份验证和Windows身份验证?

时间:2011-05-12 13:39:01

标签: asp.net forms-authentication windows-authentication

我有一个网站,其中绝大多数内容将使用表单身份验证进行保护。但是,有一个子文件夹将由管理人员在内部使用。我想使用Windows身份验证来保护此文件夹。那可能吗?我是否必须将admin文件夹设为虚拟目录?

澄清:管理人员无需访问主站点。它们实际上是两个独立的网站/应用。普通用户将通过表单身份验证访问主应用程序(并且永远不会访问管理文件夹)。管理员用户将通过Windows身份验证访问管理应用程序(并且永远不会访问主站点)。

谢谢, 科里

4 个答案:

答案 0 :(得分:1)

是的,这是可能的,但您必须构建自定义成员资格提供程序或允许它的接口。除非它们位于完全独立的项目/应用程序域中,否则无法在子文件夹上指定单独的身份验证方法。

实现此目的的一种方法是使用LDAP成员资格提供程序并根据用户名更改ldap连接(如果有可识别的方法)。

另一种方法是提供一个单独的网站,该网站使用Windows身份验证执行登录,然后为用户构建自定义cookie并将其传输回原始网站,将个人标识为管理人员。

然后可以使用web.config中的<location>元素保护文件夹。

答案 1 :(得分:0)

如果我打算使用混合身份验证构建网站,我会将网站设置为使用网络表单。然后,我将在此应用程序内部设置一个虚拟应用程序,该应用程序由相同的表单auth web.config信息组成,但设置为使用Windows Auth。

在验证其凭据后,在Windows身份验证站点的登录页面上,我将手动调用FormsAuthentication以创建身份验证令牌。此时,您可以将用户重定向到Forms Auth站点并且他们应该登录(只要两个站点的所有表单auth cookie信息相同,这可能还包括需要为两个站点设置相同的机器密钥应用程序)。

我没有专门做过这个,但这肯定是一个可行的(也可能是最优的)解决方案。

答案 2 :(得分:0)

可能就像在Windows资源管理器中右键单击admin文件夹并在“安全”选项卡中设置权限一样简单。

答案 3 :(得分:0)

将管理站点放在自己的应用程序中 - 右键单击​​IIS管理器中的文件夹,然后选择转换为应用程序。

完成后,您可以通过在IIS管理器中突出显示应用程序文件夹然后选择身份验证并调整它们来调整应用程序上的身份验证方法(或者如果您无法远程访问,则可以通过web.config进行艰难的操作。机器)。