代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

在使用Active Directory角色和身份验证提供程序时,如何提供ASP.NET窗体身份验证UX?

  •  10
  • Nate CSS Guy  · 技术社区  · 16 年前

    是否可以使用此角色提供程序 AspNetWindowsTokenRoleProvider 使用ASP.NET窗体身份验证(通过此成员身份提供程序) System.Web.Security.ActiveDirectoryMembershipProvider )?

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

    背景 --这里的目标是在使用Active Directory作为后端身份验证系统时提供ASP.NET窗体UX。如果有另外一种简单的方法可以使用内置技术来实现这一点,那就太好了,我也想听听这方面的内容。

    更新

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

    目前,我必须设置我的Active Directory连接以指向我的域中的特定ou,这将限制对该ou中的物理用户的访问--我希望将我的Active Directory连接指向我的整个域,并根据组成员身份(aka角色)限制访问如果我使用Windows身份验证,这会起作用--但我必须要做到两全其美,不写自己的RoleProvider就可以吗?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Thomas    16 年前

    正如其他人提到的,您不能使用 ActiveDirectoryMembershipProvider AspNetWindowsTokenRoleProvider .如果要将ADMP用于表单身份验证,可以选择以下几个选项:

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

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

    3. 编写(或定位)一个自定义的广告角色提供程序,以表彰广告组。编写自定义角色提供程序并不是为了发人深省,但这样做可以让管理员使用现有的广告工具管理角色成员资格。

        2
  •  2
  •   Community Mohan Dere    9 年前

    实现自己的 ADAuthorizeAttribute 继承自 AuthorizeAttribute 压倒一切 AuthorizeCore . 它比实现自己的角色提供程序或安装和配置Azman容易得多。

    请参阅下面的示例: ASP .NET MVC Forms authorization with Active Directory groups .

        3
  •  0
  •   Jonathas Costa    16 年前

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

    只是个建议。尝试授权StoreRoleProvider和Azman(授权管理器)。它对我有用(很久以前,所以我记不太多)。

    推荐文章