繁体   English   中英

如何清除UserPrincipal缓存

[英]How do i clear UserPrincipal cache

以下代码返回给定组名的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而不是新的Group(-name)。

简短的步骤:

    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是一个分布式系统。 可能有多个域控制器为同一个域服务。 因此,在通过一个域控制器从Active Directory删除对象之后,在开始复制之前,您仍然可以在另一个域控制器上找到已删除的对象。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM