Приложение имеет доступ к TreeA, поэтому я полагаю, что оно может заглянуть в GroupA и увидеть там UserB.Но как ему узнать, что ему нужно отправлять запросы на привязку в TreeB для аутентификации имени пользователя и пароля?
Атрибут member
в GroupA даст полное отличительное имя (dn) каждого члена,который может выглядеть примерно так:
member: CN=User1,OU=People,DC=TreeA,DC=foobar,DC=com
member: CN=User2,OU=People,DC=TreeB,DC=foobar,DC=com
Итак, когда «User2» пытается аутентифицироваться, вы можете сопоставить CN и знать, что вы должны проходить аутентификацию на «TreeB» вместо «TreeA».(Предположительно, у вас есть какая-то таблица, сопоставляющая DN с именем хоста сервера AD.) Или просто переберите его и попробуйте «TreeB», если вы получили «нет такого пользователя» из «TreeA».
Вам нужно будет принять решение, как обрабатывать случай дублирования имен пользователей в двух деревьях - имеет ли одно приоритет над другим?
Другой подход заключается в том, чтобы требовать от пользователей указывать, какое дерево онипроводите аутентификацию, например, войдя в систему с именем пользователя, например «user1@treea.foobar.com» .