Как установить срок действия аккаунта в openldap - PullRequest
3 голосов
/ 06 апреля 2011

Я хочу реализовать новую политику учетных записей в openldap, которая позволяет администратору устанавливать срок действия учетных записей пользователей.Однако я не могу найти никакого связанного атрибута в классах объектов.

Это не имеет ничего общего с атрибутами пароля, такими как pwdMaxAge.Использование этой политики для службы подписки.После того, как пользователь подписался на сервер на определенный период, администратор установит дату окончания срока действия учетной записи, где заканчивается подписка.Пользователь проходит проверку подлинности до истечения срока действия и не сможет пройти проверку после истечения срока действия.

Возможно ли это сделать в openldap?Я обнаружил, что Microsoft ActiveDirectory имеет атрибут AccountExpirationDate.

Ответы [ 4 ]

5 голосов
/ 27 мая 2011

Нет прямой поддержки истечения срока действия учетной записи в OpenLDAP или ее наложении (даже в contrib/).

Говард Чу предлагает , используя для этого pwdMaxAge * 1007 ppolicy , который можно заставить работать, но я нашел это менее чем идеальным: если вы уже используете ppolicy для паролей с истекающим сроком действия (в дополнение к аккаунтам с истекающим сроком действия), это будет конфликтовать с этими настройками, и если вы настроили льготный вход в систему(нормальная вещь, которую нужно сделать), пользователь может изменить свой пароль и, таким образом, сбросить таймер истечения срока действия.

Так что, похоже, лучший способ реализовать это (и хороший способ это не так) выполняется путем запуска внешней задачи, которая устанавливает (атрибут ppolicy) pwdAccountLockedTime в магическое число, обозначающее заблокированную вручную учетную запись, которая не может быть разблокирована пользователем.

pwdAccountLockedTime

Этот атрибут содержит время, когда учетная запись пользователя была заблокирована.Если учетная запись заблокирована, пароль больше не может использоваться для аутентификации пользователя в каталоге.Если pwdAccountLockedTime установлен на 000001010000Z , учетная запись пользователя заблокирована навсегда и может быть разблокирована только администратором.Обратите внимание, что блокировка учетной записи вступает в силу только в том случае, если для атрибута политики паролей pwdLockout установлено значение " TRUE ".

Эта внешняя задача (вероятнее всего, cronjob) может быть реализован таким образом, чтобы он считывал дату / время истечения срока действия из пользовательского атрибута (например, expirationTime ) в пользовательской записи, когда он зацикливается на них.Таким образом, вы можете сохранить время и дату истечения в пользовательской записи, но, конечно, блокировка полностью зависит от выполнения этой внешней задачи.

Или вы можете написать собственное наложение.

2 голосов
/ 06 апреля 2011

Посмотрите на расширение политики паролей. Он поддерживается начиная с OpenLDAP 2.3. Возможно, вам потребуется написать некоторый код для реализации необходимых расширенных элементов управления запросом / ответом.

Если вы используете OpenLDAP, вы можете использовать наложение динамических объектов. Добавьте objectClass=dynamicObject при создании учетной записи и установите соответствующий entryTTL с помощью запроса на обновление динамического объекта.

0 голосов
/ 07 июня 2019

Используйте shadowExpire, если учетная запись пользователя имеет тип shadowAccount

0 голосов
/ 05 мая 2011

не вдаваясь в подробности - взгляните на упомянутый выше оверлей PPolicy. Оно работает. И вы правы, «истечения срока действия аккаунта» нет, как в AD.

Одним из решений является запуск сценария, который рассчитывает возраст учетной записи, а также добавляет / изменяет атрибут пользователя pwdPolicySubentry и задает для него DN политики, срок действия которой истекает, если пароль равен 1 секунде и не позволяет пользователю сменить пароль.

Ни один клиент не сможет обойти это, и, тем не менее, запись пользователя останется практически без изменений.

...