gpt4 book ai didi

c# - 如何在使用 Active Directory 角色和身份验证提供程序时提供 ASP.NET 表单例份验证 UX?

转载 作者:可可西里 更新时间:2023-11-01 09:10:38 26 4
gpt4 key购买 nike

是否可以使用此角色提供程序 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?

最佳答案

正如其他人所提到的,您不能将 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 工具管理角色成员资格。

关于c# - 如何在使用 Active Directory 角色和身份验证提供程序时提供 ASP.NET 表单例份验证 UX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com