0

我有一个基于角色实体的自定义角色提供程序,以及我的表单身份验证用户实体和角色之间的称为 RoleUser 的多对多关系。我现在也想将此角色提供程序切换为使用 Windows 身份验证。对我来说,背负用户表单似乎很方便,并在我的用户实体中创建 AD 用户的“影子”。

这是可行的还是不赞成的,有没有关于这种设置的好论文等?

我对 SQL 2005 使用 EF Code First,并且没有使用自定义成员资格提供程序,因为我的用户控制器和存储库可以很好地处理我需要的所有内容;只是一个角色提供者。

4

2 回答 2

1

在这种情况下,成员资格提供程序可以是使用实体框架 DbContext 中的“用户”和“角色”模型的自定义成员资格提供程序。用户模型可能有一个布尔字段,它只是告诉用户是否是域用户。在处理域用户时,您可以选择从 Active Directory 域导入用户。管理员只需将所需的 AD 用户导入数据库即可。一旦他们进入数据库,他们就可以登录。在帐户控制器登录操作中,我们可以检查用户是否是域用户,如果他随后使用域控制器对用户进行身份验证,然后允许他登录并向他颁发令牌。这是一篇关于使用表单进行 AD 身份验证的好文章。它在 VB 中,但是你可以得到东西。您也可以按照文章创建一个支持这两种身份验证的提供程序。

http://www.cmjackson.net/2009/10/23/asp-net-mvc-using-forms-authentication-with-ldap/

于 2012-12-15T08:31:43.570 回答
0

请注意,我们有 5 种身份验证类型:

1-匿名认证

2- Asp.net 模拟

3-基本身份验证 HTTP 401 质询

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 文章也可能会有所帮助。

于 2012-12-15T08:01:14.643 回答