2014-01-30 5 views
0

Следующий код возвращает UserPricipal для данного Groupname. Но после удаления группы этот код по-прежнему возвращает мне UserPrincipal (удаленный). Есть ли способ удалить этот «кеш»?Как очистить кэш 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, я вижу старый объектSid в списке ACL вместо новой 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 

ответ

1

Active Directory представляет собой распределенную систему. Могут быть несколько контроллеров домена, обслуживающих один и тот же домен. Таким образом, после удаления объекта из Active Directory с помощью одного контроллера домена вы все равно сможете найти удаленный объект на другом контроллере домена до того, как произойдет репликация.

Даже у вас есть только один контроллер домена, вам все равно нужно обратить внимание на то, какую услугу вы потребляете. Есть обычная служба LDAP и служба глобального каталога. Служба глобального каталога - это кеш объектов из разных доменов, включая ваш локальный домен, в том же лесу. Его цель - разрешить пользователю выполнять глобальный поиск по всем доменам в одном лесу Active Directory. Аналогичную проблему вы найдете в Глобальном каталоге. После удаления объекта на контроллере домена вы все равно можете найти удаленный объект из Глобального каталога до тех пор, пока не начнется репликация. Хорошие новости находятся в одном контроллере домена, эта репликация обычно происходит быстро.

Я не знаком с UserPrincipalLookupService на Java, но, скорее всего, он использует Глобальный каталог, чтобы найти Принципа пользователя. Вы можете проверить, позволяет ли класс указать, какой контроллер домена использовать и какой глобальный каталог использовать при выполнении запроса. Если класс не позволяет указать сервер, я боюсь, что вам придется ждать репликации.

+0

Невозможно указать сервер в UserPrincipalLookupService. Я думаю, что переменная среды **% logonserver% ** показывает текущий подключенный контроллер домена. Но я хочу установить много удаленных ACL, поэтому Remote и мой компьютер имеют probebly не тот же DC. –

+0

+1 полезный; Здесь же, я искал MSDN вверх и вниз для этого уже. когда вы говорите, что «репликация обычно происходит быстро» ... знает ли кто-нибудь источник времени для жизни или где эта стратегия кэширования/репликации может быть настроена на PDC Windows 2012? – dlatikay

Смежные вопросы