Обратите внимание, что речь идет о связи между Liferay и сервером LDAP, а не о связи между браузером пользователя и Liferay.
Я спрашиваю об этом здесь, так как за 30 минут у меня не было просмотров (кроме моего собственного) на форумах liferay, и я хотел бы решить эту проблему сегодня, если возможно ...
Я смотрел:
http://www.liferay.com/community/wiki/-/wiki/Main/LDAP
http://www.liferay.com/community/wiki/-/wiki/Main/LDAP+integration
Я также читал это:
http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/ldap
И я провел кучу поисков и обнаружил, что множество людей настраивают CAS и упоминают LDAP в своих сообщениях.
Проблема в том, что я (пока?) Не заинтересован во внедрении CAS. Я хочу настроить демонстрационный сервер для людей и позволить им входить в систему со своими учетными данными LDAP / AD. Я выбрал привязку, так как у меня нет доступа к логину, который позволяет мне (и, следовательно, liferay) видеть указанные пароли.
Я знаю, что это безумие, но я также не хочу, чтобы их пароли отправлялись в открытом виде. :)
Ни в одной из документации liferay не обсуждается, как обеспечить запуск TLS. Я не эксперт по LDAP, поэтому, возможно, это обычно обеспечивается сервером LDAP или AD, но даже в этом случае было бы неплохо, если бы в документации говорилось что-то о том, как гарантировать, что злой сотрудник или злоумышленник сети могут Не просто слушайте запросы входа в систему Life-Ray, чтобы получить доступ ко всем материалам.
Из того, что я прочитал, правильным для текущих реализаций LDAP является инициирование клиентом связи TLS для конфиденциальных запросов.
http://docs.oracle.com/javase/jndi/tutorial/ldap/ext/starttls.html
Так делает ли Liferay это? Нужно ли мне что-то дополнительно настраивать, чтобы включить его?
Дело в том, что http://issues.liferay.com/browse/LEP-4225 всплывает, когда я гуглил, вызывает серьезные сомнения в том, реализовано ли это в Liferay или нет (однако я заметил, что это противоречит "old liferay" ...)
В основном я прошу кого-то, кто действительно знает, выяснить, что доступно, а что нет, и нужно ли мне что-либо делать для обеспечения безопасной связи с LDAP / AD.
Обратите внимание, что в настоящее время меня не интересуют сертификаты клиентов или иная аутентификация клиента (liferay) на сервере LDAP. Просто безопасно делегируйте аутентификацию в LDAP / AD.
РЕДАКТИРОВАТЬ: Я только что подтвердил (с помощью wirehark), что в конфигурации по умолчанию «тестовое соединение» отправляет мой пароль в виде открытого текста, так что это кажется реальной проблемой.
РЕДАКТИРОВАТЬ 2: Также подтверждено, что попытки входа в систему отправляют пароль в виде открытого текста. Очевидно, что необходимо зашифрованное решение.
Приложения должен передавать пароли в открытом виде по защищенному соединению для изменения пароля и для аутентификации, поскольку современный сервер каталогов профессионального качества имеет возможность проверять качество пароля и историю паролей. Предварительно закодированные пароли не могут быть проверены на качество или историю. По этой причине правильно настроенный сервер каталогов не принимает предварительно закодированные пароли.
Исправление моего первоначального ответа после того, как я, кажется, неправильно понял вопрос - после редактирования становится яснее, что имеется в виду соединение LDAP.
К сожалению, прямо сейчас я не могу дать хороший ответ, но, надеюсь, несколько полезных указателей:
Когда вы используете соединение LDAP через SSL, вы должны убедиться, что tomcat (инициатор соединения) доверяет сертификату, который представляет сервер LDAP. Скорее всего, этот сертификат не выпущен известным и доверенным центром (например, он, вероятно, самоподписанный).
Помните, что SSL означает не только шифрование, но и доверие другому концу, что это тот, который он заявляет: было бы глупо полагаться на шифрование, если какой-либо посредник может заставить вас подключиться к себе в зашифрованном виде. Итак, вам нужно какое-то подтверждение личности того, к которому вы подключаетесь.
Когда вы гуглите "LDAP SSL Java", вы получаете множество хороших примеров и объяснений того, как настроить виртуальную машину tomcat (и ее хранилище ключей). Да, это виртуальная машина, для которой нужно настроить доверие. http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html содержит основные указатели (во вводном абзаце), указывающие
После установки и настройки JSSE необходимо убедиться, что клиент доверяет серверу LDAP, который вы будете использовать. Вы должны установить сертификат сервера (или его сертификат CA) в базу данных доверенных сертификатов JRE. Вот пример.
# cd JAVA_HOME/lib/security # keytool -import -file server_cert.cer -keystore jssecacerts
Для получения информации о том, как использовать инструменты безопасности, см. Журнал Java 2 Platform Security в Java Tutorial. Для получения информации о JSSE прочтите Справочное руководство JSSE.
В основном: если вы не использовали keytool, вы, вероятно, не установили доверие к сертификату вашего LDAP-сервера в вашей виртуальной машине Liferay. Помните, что на этом вы еще не закончили, вам все равно нужно включить хранилище ключей, управляемое с помощью keytool, в вашу виртуальную машину. Я бы ожидал сообщений об ошибках, связанных с доверием, в файлах журнала. Поскольку вы не предоставляете файлы журнала или информацию о том, какое доверие вы установили, сделайте это или дайте мне знать, если вам потребуется дополнительная информация.
Оригинальный ответ (до пояснения, что имеется в виду LDAP-соединение):
Проверьте конфигурацию Liferay по умолчанию portal.properties и измените ее в $ LIFERAY_HOME / portal-ext.properties. Там вы найдете значение по умолчанию
#
# Set this to true to ensure users login with https. If this is set to true
# and you want your HTTP session to contain your credentials after logging
# in, then the property "session.enable.phishing.protection" must be set to
# false or your credentials will only be available in the HTTPS session.
#
company.security.auth.requires.https=false
Если вы установите это значение true, у вас может быть все, что вы хотите.
Это, конечно, предполагает, что https уже настроен и работает правильно (например, если вы перейдете в https: // localhost / или где бы ни жил ваш сервер (или https: // локальный: 8443 если вы используете собственный порт 8443). Как вы это делаете, зависит от настройки вашего сервера приложений. Как только Liferay ответит правильно, когда вы получите доступ к нему через https, вы можете применить все остальное.