我正在使用Active Directory为我的Web应用程序中的用户分配角色.
但是,我发现在更改AD中的用户安全组分配与传播给正在使用该应用程序的用户的更改之间似乎存在很长时间的延迟.
实际上,当我从AD检索C#中的用户角色时,它们是最新的,但是当我运行此代码来查看用户的角色时,它们直到第二天才会更新.如何从AD即时进行用户角色更新?
但是,我发现在更改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; }
解决方法
发生这种情况是因为Kerberos授权信息存储在本地计算机(您的应用服务器)的高速缓存内存中,因此您可能无法获取非最新数据.
你有2个选择:
>强制更新服务器上的票证授予票证(TGT)
>使用UserPrincipal.GetAuthorizationGroups使您的组不是来自应用服务器而是来自AD.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。