如何在使用Active Directory角色和身份validation提供程序时提供ASP.NET窗体身份validationUX?

是否可以将此角色提供程序AspNetWindowsTokenRoleProvider与ASP.NET FORMS身份validation一起使用(通过此MembershipProvider System.Web.Security.ActiveDirectoryMembershipProvider )?

它似乎只适用于 ,它是否可以与FORMS一起使用?

后台 – 这里的目标是在使用Active Directory作为后端身份validation系统时提供ASP.NET Forms UX。 如果还有另一种使用内置技术的简单方法,这很好,我也想听听。

更新

我应该说我有认证工作,我正在努力的是增加一个细粒度控制(如角色)。

目前,我必须设置我的Active Directory连接以指向我的域中的特定OU,这限制了对该OU中物理用户的访问 – 我想要的是将我的Active Directory连接指向我的整个域,并且如果我使用Windows身份validation,则限制基于组成员身份(又称角色)的访问权限 – 但我希望两全其美,这是否可以在不编写我自己的RoleProvider的情况下实现?

正如其他人所提到的,您不能将ActiveDirectoryMembershipProviderAspNetWindowsTokenRoleProvider 。 如果要将ADMP与表单身份validation一起使用,则可以选择以下几种方法:

  1. 使用AuthorizationManager aka 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工具管理角色成员资格。

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

请参阅此处的示例: 使用Active Directory组的ASP .NET MVC Forms授权 。

是的,你是对的; 它只适用于Windows窗体身份validation。 您可以在此处确认: http : //msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx

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