【问题标题】:Time lag in changes to Active Directory security groups and User RolesActive Directory 安全组和用户角色更改的时间滞后
【发布时间】:2015-06-09 10:40:23
【问题描述】:

我正在使用 Active Directory 为我的 Web 应用程序中的用户分配角色。 但是,我发现在 AD 中更改用户安全组分配与传播到使用该应用程序的用户之间似乎存在很长时间的滞后。 事实上,当我从 AD 中检索 C# 中用户的角色时,它们是最新的,但是当我运行此代码来查看用户的角色时,它们直到第二天才会更新。如何从 AD 即时更新用户角色?

var identity = WindowsIdentity.GetCurrent();
var groups = from sid in identity.Groups select sid.Translate(typeof(NTAccount)).Value;
foreach (var group in groups)
{
    groupName = group;
}

【问题讨论】:

    标签: asp.net-mvc active-directory windows-authentication


    【解决方案1】:

    这是因为 Kerberos 授权信息存储在本地计算机(您的应用服务器)的缓存中,因此您可能无法获得 NOT 最新数据。

    你有两个选择:

    1. 在您的服务器上强制更新票证授予票证 (TGT)
    2. 使用 UserPrincipal.GetAuthorizationGroups 不是从应用服务器而是从 AD 获取您的组。

    【讨论】:

    • 我对选项 1 进行了 Google 搜索,但没有找到任何结果。我不得不承认我对 TGT 不熟悉
    • 选项 2 可能会让我获得我所属的组,但我如何将它们设置为我应该担任的角色?
    【解决方案2】:

    请记住,用户的令牌仅在他再次登录时才会更新。 AD 立即将用户显示为群组成员,但用户只有在群组的 SID 包含在其令牌中后才能行使这些权利。

    因此,您要么需要检查 AD 以查看用户是否是特定组的成员,要么必须等到用户在组分配完成并复制后登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 2010-10-18
      • 1970-01-01
      • 2017-02-06
      相关资源
      最近更新 更多