gpt4 book ai didi

asp.net - AspNetWindowsTokenRoleProvider 对于 ASP.NET 中的 Windows 身份验证无法正常工作

转载 作者:可可西里 更新时间:2023-11-01 13:36:49 24 4
gpt4 key购买 nike

我正在 ASP.NET 中开发一个使用 Windows 身份验证的 Intranet 应用程序。我创建了一个从 Active Directory 域 Controller 获取信息的 AD 类。这就是我用来获取当前登录用户所在的用户组之类的东西。问题出在用户所在的 ASP.NET 角色中。看起来很有趣,但是用户所在的 AD 组列表完全是不同于用户拥有的角色列表。

这是我得到的:

certian 用户的 AD 组列表

  1. 开发人员
  2. 账户运算符(operator)
  3. 域管理员
  4. IS_IUSRS
  5. 管理员

同一用户的角色列表

  1. PUDDOM\域用户
  2. 所有人
  3. 内置\用户
  4. 内置\管理员
  5. NT AUTHORITY\INTERACTIVE
  6. NT AUTHORITY\Authenticated Users
  7. NT AUTHORITY\本组织
  8. 本地
  9. PUDDOM\域管理员
  10. PUDDOM\Denied RODC 密码复制组
  11. PUDDOM\DnsAdmins

其他信息:

  1. 我的网站使用 IIS7 的集成 Windows 身份验证。
  2. 我的 web.config 的一部分看起来像

这个:

<authentication mode="Windows"  />
<authorization>
<deny users="?" />

</authorization>

<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true">
<providers>
<remove name="AspNetSqlRoleProvider" />
</providers>
</roleManager>

如何核对列表?

我需要让我的角色列表反射(reflect)与我的广告组列表相同的数据,因为我将在我的站点地图和其他内容中使用角色修剪。

最佳答案

部分结果是因为用户所属的某些组是其他组的成员。用户组的完整列表将包括该用户所属的所有组,包括直接所属的组和通过其他组的成员身份(这些组也是成员的组)。

该列表还将包括默认情况下通常对 native 管理工具隐藏的内置组。

最好的办法是让应用程序存储您希望应用程序看到的组的主列表,或者您希望应用程序忽略的组列表(包含列表或排除列表)。然后,当您拉回特定用户的角色时,只需将其与配置的排除或包含列表进行比较,并过滤掉不需要的结果。

如果你想要一个更简单的方法,有一个开源的AD role provider over at codeproject已经支持排除和包含列表。它还具有其他不错的功能,如可选缓存,这将真正加快您的应用程序。内置的 AD 角色提供程序性能很差。

关于asp.net - AspNetWindowsTokenRoleProvider 对于 ASP.NET 中的 Windows 身份验证无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/264278/

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