【问题标题】:How can I provide an ASP.NET Forms Authentication UX while using Active Directory Role and Authentication providers?如何在使用 Active Directory 角色和身份验证提供程序时提供 ASP.NET 表单身份验证 UX?
【发布时间】:2010-04-09 19:40:29
【问题描述】:

是否可以将此 Role Provider AspNetWindowsTokenRoleProvider 与 ASP.NET FORMS 身份验证一起使用(通过此 MembershipProvider System.Web.Security.ActiveDirectoryMembershipProvider)?

它似乎只适用于<authentication mode="Windows">,是否可以将它与FORMS一起使用?

背景 -- 这里的目标是在使用 Active Directory 作为后端身份验证系统的同时提供 ASP.NET Forms UX。如果有其他使用内置技术的简单方法可以做到这一点,那就太好了,我也想听听。

更新

我应该说我的身份验证工作正常,我正在努力添加一个粒度控制级别(例如角色)。

目前,我必须将我的 Active Directory 连接设置为指向我的域中的特定 OU,这限制了只有物理上在该 OU 中的用户才能访问——我想要将我的 Active Directory 连接指向我的整个域,并根据组成员身份(又名角色)限制访问,如果我使用 Windows 身份验证,这将有效——但我想拥有两全其美,如果不编写我自己的 RoleProvider,这可能吗?

【问题讨论】:

  • 根据您的“背景”段落,听起来本教程就是您所需要的:-msdn.microsoft.com/en-us/library/ms998360.aspx 它被称为“如何:在 ASP.NET 2.0 中使用 Active Directory 的表单身份验证”不要如果您使用的是较新版本,请担心 2.0 元素 - 它只是表示所需的最低版本。

标签: c# .net asp.net security forms


【解决方案1】:

正如其他人所提到的,您不能将ActiveDirectoryMembershipProviderAspNetWindowsTokenRoleProvider 一起使用。如果您想将 ADMP 与表单身份验证一起使用,您有几个选择:

  1. 使用 AuthorizationManager 又名 AzMan。 - AzMan 内置在 Windows 2003+ 中,可以与 Active Directory 组交互。此外,.NET 2.0+ 中内置了一个AuthorizationStoreRoleProvider,您可以使用它与之交互。 AzMan 在任务、操作和角色上工作,其中大概您的应用程序将被编码为执行特定的任务,然后可以将这些任务分组到操作中,然后您可以创建有权执行各种操作的角色。安装 AzMan 时会安装一个管理应用程序,可用于管理任务、操作和角色。然而,AzMan 也有一些缺点。首先,AuthorizationStoreRoleProvider 无法识别任务。相反,它会加载带有操作列表的Roles 列表。因此,除非您创建提供程序的自定义版本,否则您的应用程序将需要寻找操作名称而不是任务名称。其次,在最低级别的交互中仍然通过 COM 进行交互可能是一种负担。除非您希望您的管理员必须使用 AzMan 工具,否则您需要编写自己的页面来管理操作、角色和角色中的成员资格。

  2. 使用 SqlRoleProvider 并将角色映射到用户名。该解决方案的优点是实现起来非常简单。由于 RoleProvider 对用户名而不是 UserId 进行操作,因此您几乎可以立即使用它。在您的代码中,您只需检查 IsInRole 以确定给定用户是否已被放入您的代码识别的角色中。显着的缺点是它只针对用户名而不是 AD 组,因此管理员无法使用 AD 工具来管理用户。相反,您必须编写一个管理控制台来管理角色成员资格。此外,在 AD 级别更改用户名需要更新应用程序的已知用户名列表。

  3. 编写(或定位)一个支持 AD 组的自定义 AD RoleProvider。编写自定义角色提供程序并不适合胆小的人,但这样做可以让管理员使用他们现有的 AD 工具管理角色成员资格。

【讨论】:

    【解决方案2】:

    通过继承AuthorizeAttribute 并覆盖AuthorizeCore 来实现您自己的ADAuthorizeAttribute。这比实现您自己的角色提供程序或安装和配置 AzMan 要容易得多。

    在此处查看我的示例: ASP .NET MVC Forms authorization with Active Directory groups.

    【讨论】:

      【解决方案3】:

      是的,你是对的;它仅适用于 Windows 窗体身份验证。你可以在这里确认: http://msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx

      只是一个建议。尝试使用 AzMan(授权管理器)的 AuthorizationStoreRoleProvider。它对我有用(很久以前,所以我不太记得了)。

      【讨论】:

      • AzMan 是内置的吗?或者它是一个新的/额外的下载/安装?如果有,在哪里?
      • Windows Server 自带“授权管理器”。只需将其 dll 导入您的项目,您就可以开始了。 :)
      • 查看这个网址:msdn.microsoft.com/en-us/library/ms998336.aspx 它解释了整个过程,因为 AzMan 安装。
      猜你喜欢
      • 1970-01-01
      • 2011-01-19
      • 2010-12-06
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多