gpt4 book ai didi

asp.net - 使用 WindowsIdentity.GetCurrent() 枚举组返回旧组

转载 作者:行者123 更新时间:2023-11-30 23:53:47 26 4
gpt4 key购买 nike

我有一个用户,当我尝试使用以下任一方法枚举她的组时System.Security.Principal.WindowsIdentity.GetCurrent().Groups在用户的电脑上
System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups在 IIS 服务器上,我得到了他们旧组的列表,而不是他们的新组。

我已经检查了他们进行身份验证的 DC,并且 ASP.NET 页面正在 SharePoint 实例中运行,因此最喜欢的 LogonUserIdentity 是从那里提供的 Kerberos 票证。

我应该直接从 AD 中查找组而不是依赖 WindowsIdentity 或 LogonUserIdentity?

最佳答案

如果您使用 WindowsIdentityLogonUserIdentity ,它将从存储在 Kerberos 票证授予票证 (TGT) 中的授权数据中检索组信息。

它功能强大且有用,因为一旦您通过身份验证并获得 Kerberos TGT,您就不需要再次查询 Active Directory 来获得所有组信息。实际上,组枚举非常昂贵且复杂。因此,首选 Kerberos 票证方法,并且在您访问任何 Windows 资源时使用此方法。

但是,这也意味着将用户帐户添加到组后,WindowsIdentityLogonUserIdentity方法不会知道新添加的组。您必须清除您的 Kerberos 票证并重新获取它。您可以注销然后登录,也可以锁定屏幕并输入密码以解锁屏幕。

如果出于某些原因,您仍然想自己进行组枚举,我建议您使用UserPrincipal.GetAuthorizationGroups在 .NET 3.5 中。它返回用户所属的所有安全组。

关于asp.net - 使用 WindowsIdentity.GetCurrent() 枚举组返回旧组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868729/

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