我有一个自定义的角色提供程序,它构建在一个角色实体上,在我的表单身份验证用户实体和角色之间有一个称为RoleUser的多对多关系。现在,我想将此角色提供程序切换为使用Windows身份验证。这对我来说似乎很方便,可以利用表单用户,并在我的用户实体中创建AD用户的“影子”。
这是可行的还是不赞成的,关于这种设置有什么好的论文等吗?
我在SQL 2005上使用EF Code First,并且没有使用自定义的成员提供程序,因为我的用户控制器和存储库可以很好地处理我所需要的一切;只需要一个角色提供程序。
发布于 2012-12-15 16:01:15
请注意,我们有5种类型的身份验证:
1- Anonymous Authentication
2- Asp.net Impersonation
3- Basic Authentication HTTP 401 Challenge
4-表单身份验证HTTP 302登录/重定向
5- Windows身份验证HTTP 401挑战
MVC认证的原理是指,MVC不使用ViewState来认证users.It不使用视图状态或基于服务器的表单。这使得MVC框架非常适合希望完全控制应用程序行为的开发人员。
根据MVC标准,windows身份验证适用于intranet应用程序,而forms身份验证适用于internet应用程序,因为存在安全问题等。
同时使用windows和forms身份验证并不常见。但是你可以像这个codeproject article一样混合使用它们。除非你想做一个像表单身份验证这样的操作,并且在后端通过你的编程能力来存储windows帐户信息,以存储到数据库等。只需确保在身份验证类型之间没有挑战。
还有另一件重要的事情,那就是身份验证和授权之间的区别,你可以在web.config上配置它们,如下所示:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>或
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>这个MSDN Article可能也会有帮助。
发布于 2012-12-15 16:31:44
本例中的成员资格提供程序可以是使用enitity框架DbContext中的“用户”和“角色”模型的自定义成员资格提供程序。用户模型可能有一个布尔值字段,该字段仅告知用户是否是域用户。在处理域用户时,您可以选择从Active Directory域导入用户。管理员可以只将所需的AD用户导入数据库。一旦他们在数据库中,他们就可以登录了。在帐户控制器登录操作中,我们可以检查用户是否是域用户,然后使用域控制器对用户进行身份验证,然后允许他登录并向他颁发令牌。这里有一篇关于表单的AD身份验证的很好的文章。这是在VB中,但是你可以得到一些东西。此外,您还可以按照本文创建支持这两种身份验证的提供程序。
http://www.cmjackson.net/2009/10/23/asp-net-mvc-using-forms-authentication-with-ldap/
https://stackoverflow.com/questions/10156873
复制相似问题