gpt4 book ai didi

java - 如何清除 UserPrincipal 缓存

转载 作者:行者123 更新时间:2023-12-01 13:32:54 25 4
gpt4 key购买 nike

以下代码返回给定组名的 UserPricipal。但是删除组后,此代码仍然返回给我一个 UserPrincipal (已删除的)。有没有办法删除这个“缓存”?

UserPrincipalLookupService upls=fs.getUserPrincipalLookupService();
UserPrincipal who;
try {
who = upls.lookupPrincipalByName("myDeletedGroupName");
} catch (IOException e1) {
// TODO Auto-generated catch block
return;
}

因为设置 Windows ACL 时我需要 UserPrincipalName。重新创建具有相同名称的已删除组后,ACL 将设置为旧组而不是新组 - 当查看 Windows-GUI 时,我在 ACL 列表中看到旧的 objectSid 而不是新组(-名称)。

步骤简述:

    1. creating AD Group "xxxx"
2. setting ACL in File f for xxxx
3. deleting Group "xxxx"
4. deleting ACL
5. create new Group "xxxx" in AD
6. setting ACL in File f for xxxx
-> the OldSid from the deleted Group is the ACL Principal

最佳答案

Active Directory 是一个分布式系统。可能有多个域 Controller 服务于同一个域。因此,在通过一个域 Controller 从 Active Directory 中删除对象后,您仍然可以在复制开始之前在另一台域 Controller 上找到已删除的对象。

即使您只有一个域 Controller ,您仍然需要注意您正在使用哪种服务。有普通的LDAP服务和全局目录服务。全局编录服务是来自同一林中不同域(包括您的本地域)的对象的缓存。其目的是允许用户在同一 Active Directory 林中的所有域中进行全局搜索。您会在 Global Catalog 上发现类似的问题。在域 Controller 上删除对象后,您仍然可以从全局编录中找到已删除的对象,直到复制开始。好消息是在同一域 Controller 内,这种复制通常会很快发生。

我不熟悉 Java 中的 UserPrincipalLookupService,但很可能它使用全局目录来查找用户主体。您可能需要检查该类是否允许您指定执行查询时要使用哪个域 Controller 以及要使用哪个全局编录。如果类不允许您指定服务器,恐怕您必须等待复制。

关于java - 如何清除 UserPrincipal 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461046/

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