2010-04-09 45 views
10

是否可以使用此角色提供程序AspNetWindowsTokenRoleProvider与ASP.NET FORMS身份验证(通过此MembershipProvider System.Web.Security.ActiveDirectoryMembershipProvider)?如何在使用Active Directory角色和身份验证提供程序时提供ASP.NET Forms Authentication UX?

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

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

更新

我应该说,我有认证工作,就是我用是增加的细粒度控制的水平(如角色)挣扎。

目前,我必须设置我的Active Directory连接以指向我的域中的特定OU,这将限制只访问该OU中的用户 - 我希望将我的Active Directory连接指向我的整个域,并限制基于组成员(也称为角色)的访问,如果我使用Windows身份验证,这将起作用 - 但我希望拥有这两个世界的最佳,这是可能的,这是不可能写我自己的RoleProvider?

+0

基于你的“背景”段落,它听起来像这个教程是你所需要的: - http://msdn.microsoft.com/en-us/library/ms998360.aspx它被称为“如何:使用窗体身份验证ASP.NET 2.0中的Active Directory“如果您使用的是更新版本,请不要担心2.0元素 - 它只是表示所需的最低版本。 – rtpHarry 2010-04-15 09:50:14

回答

6

正如其他人所说的,您不能使用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 RoleProvider,用于尊重AD组。编写一个自定义角色提供者并不是一件容易的事,但是这样做可以让管理员使用他们现有的AD工具管理角色成员资格。

0

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

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

+0

AzMan是否内置?或者它是一个新的/额外的下载/安装?如果是这样,在哪里? – Nate 2010-04-14 04:36:20

+0

“授权管理器”随Windows Server一起提供。只需将它的dll导入到你的项目中,你就可以走了。 :) – 2010-04-14 15:34:08

+0

检查此URL:http://msdn.microsoft.com/en-us/library/ms998336.aspx 它解释了自AzMan安装以来的整个过程。 – 2010-04-14 15:35:57

相关问题