Лучшие практики LDAP - PullRequest
       9

Лучшие практики LDAP

5 голосов
/ 20 февраля 2009

Меня интересуют лучшие практики использования аутентификации LDAP в веб-приложении на основе Java. В моем приложении я не хочу хранить имя пользователя \ пароль, только некоторые идентификаторы. Но я хочу получить дополнительную информацию (имя, фамилию), если таковая имеется в каталоге LDAP.

Ответы [ 4 ]

6 голосов
/ 20 февраля 2009

Моя команда использует LDAP в качестве стандартного способа аутентификации. По сути, мы рассматриваем LDAP как любую другую базу данных.

Чтобы добавить пользователя в приложение, вам нужно выбрать его из LDAP или создать его в LDAP; когда пользователь удаляется из приложения, он остается в LDAP, но не имеет доступа к приложению.

В основном вам нужно хранить только имя пользователя LDAP локально. Вы можете либо читать данные LDAP (электронная почта, отдел и т. Д.) Из LDAP каждый раз, либо каким-либо образом извлекать их из приложения, хотя чтение их из LDAP, вероятно, проще и разумнее, поскольку данные LDAP могут измениться. Конечно, если вам нужны отчеты или широко используются данные LDAP, вы можете извлечь их из LDAP (вручную или с помощью пакетной задачи).

Приятно то, что как только пользователь отключен в LDAP, он отключается во всех приложениях одновременно; Кроме того, пользователь имеет одинаковые учетные данные во всех приложениях. В корпоративной среде, с кучей внутренних приложений, это большой плюс. Не используйте LDAP для пользователей только для одного приложения; никаких реальных выгод в этом сценарии.

4 голосов
/ 02 ноября 2011

Общие рекомендации по использованию LDAP см. В «LDAP: Практика программирования» .

.
1 голос
/ 20 февраля 2009

Если у вас более одного веб-приложения и вы хотите использовать аутентификацию LDAP, тогда предварительно упакованное решение единого входа может быть лучше, чем создание вашей собственной аутентификации LDAP. CAS поддерживает аутентификацию LDAP и может извлекать данные, необходимые для вашего приложения.

В моем колледже мы фактически внедрили CAS как единый вход на наш сервер Active Directory. Мы также используем CAS для аутентификации наших приложений J2EE и работаем над использованием CAS для аутентификации наших приложений PHP.

Мы используем AD для удержания пользователей домена. Существуют определенные OU для в зависимости от типа пользователя. Каждый из пользователей имеет уникальный идентификатор, который является идентификатором их студента / сотрудника, поэтому приложения могут использовать его в качестве первичного ключа в своих базах данных. У нас есть метод авторизации на основе базы данных для наших PHP-приложений. Авторизация для приложения J2EE происходит из значения в LDAP.

Удачи в вашем приложении.

0 голосов
/ 21 февраля 2009

Итак, вы хотите, чтобы пользователь вводил только идентификатор, а затем извлекал остальную информацию из LDAP? Это довольно просто.

  1. Создать контекст LdapInitial и подключиться к LDAP
  2. Выполнить поиск идентификатора (он должен быть сохранен как какое-либо значение атрибута) - например, (& (userid = john) (objectClass = user)) - что означает «userid = john AND objectClass = user»
  3. Объект SearchResult будет содержать все атрибуты (или те, которые вы просили)

Некоторые реализации LDAP (в частности, MS ActiveDirectory LDAP) не позволяют подключаться к анонимному пользователю. Для тех, кто хочет подключиться, вам нужен технический идентификатор пользователя / пароль.

Как сказано выше, LDAP обычно имеет смысл, когда у вас много приложений.

P.S. Чтобы почувствовать, что такое LDAP, попробуйте Apache Directory Studio.

...