2009-02-19 2 views
5

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

ответ

6

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

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

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

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

1

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

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

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

Удачи вам в применении.

0

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

  1. Создать LdapInitial контекст и подключения к LDAP
  2. Выполните поиск по ID (он должен быть сохранен как некоторое значение атрибута) - например, (& (Идентификатор_пользователя = джон) (объектный = пользователь)) - что означает "идентификатор пользователя = джон и объектный = пользователь"
  3. объект SearchResult будет содержать все атрибуты (или те, которые вы просили)

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

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

P.S. Для того, чтобы почувствовать, что LDAP пытается Apache Directory Studio.

+0

Не совсем так! В моей базе данных приложений я хочу хранить только идентификатор и связанное с ним DN из LDAP. И если мне нужна дополнительная информация о пользователе, я могу получить ее из каталога, используя DN –

+0

До вас, хотя это дублирование. Но что ты на самом деле задаешь? –

4

Общие рекомендации по использованию LDAP см. В разделе "LDAP: Programming practices".

+2

Ссылка мертва, но резюме можно найти на https://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/ –

Смежные вопросы