Как читать политику паролей LDAP в Java - PullRequest
4 голосов
/ 21 октября 2011

Могу ли я прочитать политику паролей пользователей из LDAP, например, когда она истекает, или более подробную информацию, такую ​​как надежность пароля (минимальная длина и т. Д.)? Мне нужна эта информация, чтобы я мог использовать ту же политику для пользователей, хранящихся в моей базе данных. Мое приложение Java требует, чтобы пользователи из базы данных были синхронизированы с доменом.

Ответы [ 4 ]

6 голосов
/ 17 декабря 2014

Если вы хотите получить политику паролей через запросы LDAP, попробуйте это

без политики PSO в текущем домене

String searchDomain= "DC=company,DC=ORG";
String ldapQuery = "(&(objectClass=domainDNS))";
String ldapAttribute = "maxPwdAge";

Если вы используете политику PSO, попробуйте этот код

String domainLookupString = "CN=UsersPSO,CN=Password Settings Container,CN=System,DC=company,DC=ORG";
String ldapFilterString = "(&(objectClass=msDS-PasswordSettings))";
String ldapAttribute = "msDS-MaximumPasswordAge"
1 голос
/ 24 октября 2011

Как правило, в этих обстоятельствах есть, по крайней мере, три разные вещи.

Состояние учетной записи, которая включает такую ​​информацию, как учетная запись заблокирована, просрочена или отключена. «Статус» учетной записи обычно отображается на вкладке «Учетная запись MMC». Мы помещаем некоторую информацию в нашу вики о значениях LDAP по адресу:

http://ldapwiki.willeke.com/wiki/Active%20Directory%20Account%20Lockout а также http://ldapwiki.willeke.com/wiki/MMC%20Account%20Tab

Состояние пароля, срок действия пароля истек.

К сожалению, атрибуты, отражающие состояние этих условий, не отражаются в AD в реальном времени. Некоторые обновляются только тогда, когда пользователь пытается аутентифицироваться. (успешно или неуспешно).

-jim

0 голосов
/ 21 октября 2011

Это зависит от основного сервера LDAP.

Например, если вы используете Microsoft Active Directory, запись пользователя будет иметь атрибут с именем accountExpires, который является датой истечения срока действия учетной записи.

Active Directory также имеет атрибут пользователя userAccountControl, который представляет собой битовую маску, определяющую различные состояния, связанные с учетной записью.Например, если установлен бит 24, это означает, что срок действия пароля истек (userAccountControl & 0x800000 != 0).Бит 2 «отключен для учетной записи» и т. Д. Подробнее на http://support.microsoft.com/kb/305144.

Для других серверов LDAP (OpenLDAP, ApacheDS и т. Д. И т. Д.) Вам необходимо ознакомиться с документацией.

0 голосов
/ 21 октября 2011

Да, вы можете с JNDI.Вы должны прочитать значение операционного атрибута pwdPolicySubentry из контекста пользователя.Это дает вам DN объекта pwdPolicy, который вы затем просматриваете как контекст с атрибутами и получаете все атрибуты, начинающиеся с 'pwd'.Однако, если у пользователя есть политика паролей по умолчанию, вам нужно будет просмотреть конфигурацию вашего сервера LDAP, чтобы найти его DN.В OpenLDAP это находится в slapd.conf в строке ppolicy_default в блоке директив overlay ppolicy.

...