Предоставляет ли LDAP токен после привязки, чтобы мне не приходилось каждый раз отправлять учетные данные?

У меня есть веб-приложение (PHP, но это не имеет значения). Он использует LDAP для аутентификации (уже работает) и позволяет пользователям выполнять поиск по LDAP (уже работает).

Но при поиске я использую общую учетную запись процесса для bind(), а затем запускаю search().

Я хотел бы использовать учетную запись LDAP, которая входит в систему, чтобы быть той же учетной записью, которая привязывается для поиска. Но единственный способ, который я вижу для этого, - хранить учетные данные пользователя в сеансах (плохо!).

В двух словах: могу ли я получить "состояние/сеанс/??" токен из LDAP, для привязки (), а затем для поиска () в последующих HTTP-запросах?

(кстати, используя Active Directory.)


person Lance Rushing    schedule 28.09.2009    source источник


Ответы (1)


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

Существуют различные расширения LDAP (в том числе несколько в Active Directory), поэтому возможно, что одно из них добавляет сеансы через соединения, но если это так, я не знаю об этом.

В качестве обходного пути, поскольку Active Directory поддерживает GSSAPI и из-за того, как работает Kerberos, вы должны иметь возможность использовать учетные данные пользователя для запроса билета Kerberos для доступа к LDAP, а затем сохранить этот билет как ваше «состояние/сеанс/? ?" токен. Этот билет Kerberos будет действителен только для доступа к LDAP, и его срок действия истечет автоматически, что позволит избежать ловушек, связанных с хранением учетных данных пользователя в сеансе. Я не знаю, поддерживает ли ваша библиотека LDAP GSSAPI и даст ли вам достаточно контроля, чтобы сделать это или нет.

person Josh Kelley    schedule 28.09.2009
comment
Аутентифицированное удостоверение не используется для остальной части соединения, аутентифицированное удостоверение используется в соединении до следующего BIND для соединения, при условии, что используется LDAPv3. - person Terry Gardner; 26.07.2011