我有一个基于角色实体的自定义角色提供程序,以及我的表单身份验证用户实体和角色之间的称为 RoleUser 的多对多关系。我现在也想将此角色提供程序切换为使用 Windows 身份验证。对我来说,背负用户表单似乎很方便,并在我的用户实体中创建 AD 用户的“影子”。
这是可行的还是不赞成的,有没有关于这种设置的好论文等?
我对 SQL 2005 使用 EF Code First,并且没有使用自定义成员资格提供程序,因为我的用户控制器和存储库可以很好地处理我需要的所有内容;只是一个角色提供者。
我有一个基于角色实体的自定义角色提供程序,以及我的表单身份验证用户实体和角色之间的称为 RoleUser 的多对多关系。我现在也想将此角色提供程序切换为使用 Windows 身份验证。对我来说,背负用户表单似乎很方便,并在我的用户实体中创建 AD 用户的“影子”。
这是可行的还是不赞成的,有没有关于这种设置的好论文等?
我对 SQL 2005 使用 EF Code First,并且没有使用自定义成员资格提供程序,因为我的用户控制器和存储库可以很好地处理我需要的所有内容;只是一个角色提供者。
在这种情况下,成员资格提供程序可以是使用实体框架 DbContext 中的“用户”和“角色”模型的自定义成员资格提供程序。用户模型可能有一个布尔字段,它只是告诉用户是否是域用户。在处理域用户时,您可以选择从 Active Directory 域导入用户。管理员只需将所需的 AD 用户导入数据库即可。一旦他们进入数据库,他们就可以登录。在帐户控制器登录操作中,我们可以检查用户是否是域用户,如果他随后使用域控制器对用户进行身份验证,然后允许他登录并向他颁发令牌。这是一篇关于使用表单进行 AD 身份验证的好文章。它在 VB 中,但是你可以得到东西。您也可以按照文章创建一个支持这两种身份验证的提供程序。
http://www.cmjackson.net/2009/10/23/asp-net-mvc-using-forms-authentication-with-ldap/
请注意,我们有 5 种身份验证类型:
1-匿名认证
2- Asp.net 模拟
4-表单身份验证 HTTP 302 登录/重定向
5- Windows 身份验证 HTTP 401 质询
MVC 身份验证的哲学是指这样一个事实,即 MVC 不使用ViewState来验证用户。它不使用视图状态或基于服务器的表单。这使得 MVC 框架非常适合希望完全控制应用程序行为的开发人员。
根据MVC标准,windows认证适合内网应用,forms认证适合互联网应用,因为安全问题等等。
同时使用 Windows 和表单身份验证并不常见。但是您可以像这篇codeproject 文章一样使用它们的混合。除非您想执行表单身份验证之类的操作,并在后端通过您的可编程性存储 Windows 帐户信息以存储到 DB 等。只有确保身份验证类型之间没有挑战。
还有另一件重要的事情,即身份验证和授权之间的差异,您可以在 web.config 中配置它们,如下所示:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>
或者
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
这篇MSDN 文章也可能会有所帮助。