Это потому, что вы создали экземпляры модуля LDAP, поэтому имя атрибута LDAP-Group изменилось. Есть несколько способов решить эту проблему, но самый простой - дать указание модулю LDAP использовать один и тот же атрибут для всех его экземпляров, а затем заставить его получить полный список участников.
Для каждого модуля LDAP раскомментируйтеи установите cache_attribute таким же. Это можно просто установить на «LDAP-Group», если хотите.
Затем снова для каждого модуля LDAP раскомментируйте и установите для cacheable_dn значение «да».
Вам может потребоваться вызвать rlb_ldap для предварительного заполнения информации о группе, прежде чем пытаться выполнять какие-либо групповые проверки, иначе проверка группы просто попадет на один или другой LDAP, и вы не получите избыточность.
Если вы используете EAP и извлекаете информацию LDAP во внутреннем туннеле, вам необходимо сохранить информацию о членстве в группе в списке состояний сеанса и восстановить ее, прежде чем снова проверять информацию о членстве.
Для хранения LDAPинформация о группе:
ldap
if (ok || updated) {
update session-state {
&LDAP-Group += &LDAP-Group[*]
}
}
Чтобы восстановить ее:
update request {
update request {
&LDAP-Group += &session-state:LDAP-Group[*]
}
}
Если вы извлекаете информацию о группе на внутреннем сервере, вам нужно изменить update session-state
на update outer.session-state
.
Другая потенциальная проблема, с которой вы можете столкнуться, это то, что вы перечисляете rlb_ldap в post-auth, но не переопределяете метод. Это означает, что когда вызывается rlb_ldap, он выполняет свои обычные обязанности после авторизации, которые изменяют объект пользователя в каталоге LDAP для записи в последний раз и затем вошли в систему.
Чтобы исправить это, измените свой вызов rlb_ldap наrlb_ldap.authorize
, это приведет к тому, что вместо этого будет получена информация о членстве в группе.