【问题标题】:ASP.NET User.IsInRole() with trusted-domain memberships具有受信任域成员身份的 ASP.NET User.IsInRole()
【发布时间】:2021-01-11 23:26:27
【问题描述】:

我有一个 .NET Framework 4.7.2 MVC 5 站点,它使用 Windows 身份验证来授权访问基于 AD 组成员身份的操作。这适用于单个域,但我们有域信任,并且 ASP 似乎无法解析来自其他域的成员资格。

例如 两个域:Parent 和 Leaf 该站点在具有本地安全组设置的父域中运行:SiteAccess-L。 SiteAccess-L 包含一个成员 Leaf\SiteAccess-G,而该成员又拥有我们的用户 Leaf\User。

当我转储HttpContext.User.Identity.Groups 的内容(通过WindowsIdentity 进行转换)时,我可以看到用户所属的所有叶域组,但看不到任何父域组。这只发生在远程用户身上,如果我在本地访问该站点,它似乎可以工作。

使用相同的用户帐户在 Web 服务器的桌面上运行一个简单的 C# 应用程序并调用 WindowsIdentity.GetCurrent() 将使我恢复域组成员身份。

有谁知道这里给出了什么,以及我如何访问 MVC 中的完整跨域组成员资格?如果我在 MVC 中使用 GetCurrent(),我会得到运行应用程序池的服务帐户。

谢谢。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 windows-identity


    【解决方案1】:

    我终于解决了这个问题,但我不完全明白为什么。

    问题似乎与 SPN 有关。当通过http://mysite.parent/ 等 URL 访问网页并且为此主机设置了 SPN 时,就会出现上述问题。

    删除 SPN 解决了​​该问题,并且该站点可以查看所有组。这显然与 Keberos 相关,但我的理解还不够深入,无法断然肯定。

    最后,SPN 不再需要,因此可以将其移除以解决问题。参考:https://www.aligrant.com/web/blog/2020-09-28_iis__do_i_need_to_use_a_spn

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2011-10-30
      • 2011-06-30
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      相关资源
      最近更新 更多