LINUX.ORG.RU
ФорумAdmin

особенная аутентификация в dovecot для localhost

 ,


0

1

Прешло мне по наследству django приложение. При создании пользователя в джанге ему создается ящик почтовый. В качестве клиента для почты прикручен к django приложению roundcude. Сервер почты - dovecot.

Сейчас аутентификация пользователя в почте происходит следующим образом(мне самому пока не все понятно, поэтому пока так расскажу): RoundCube при попытке доступа к почте тырит из куков sessionid джанги, потом берет из базы джанги сереализованную в json и зашифрованную сессию, дешифрует её и получает оттуда user_id. Далее по этому id приложение вытягивает всю пользовательскую инфу, включая _ПАРОЛЬ В PLAIN TEXT_ и подсовывает этот пароль dovecot'у.

На стороне Dovecot'а написан лютый sql скрипт, который вытягивает из базы django захэшированный и посоленный пароль, вытягивает из него соль, хэширует и солит пароль, который ему подсовывают при аутентификации, сравнивает их и пускает/не пускает пользователя на сервер.

Чего хочется: хочу убрать из базы plain text пароли, для этого достаточно dovecot-sql скрипт переписать, чтобы он сразу посоленный и хэшированый пароль из базы с тем что ему подсунут. А со стороны roundcube подсовывать хэш пароля.

Но такой способ не позволит использоавть сторонние клиенты для доступа к почте.

Вот и хочется мне настроить разные способы аутентификации для пользователя у dovecot для разных доменов, которые к нему обращаются.

За другие предложения тоже буду дико благодарен, так как ни в зуб ногой в этом всем хозяйстве.

★★★★★

Может и бред, но:
В Dovecot sql сделать выборку по двум условиям (OR):
1) сравнивать то что передали в чистом виде с паролями в бд (тогда можно в Roundcube просто подсовывать пароль из бд джанго)
2) шифровать то, что передал клиент.

Но тогда, если в клиенте подсунуть хэш пароля, можно получить доступ к почте. Не знаю насколько это для вас критично.

Я мало работал с почтовым серверами, но по-моему механизмы аутентификации позволяют передавать серверу пароль в уже зашифрованном виде. (http://wiki2.dovecot.org/Authentication/Mechanisms)
Может и ошибаюсь.

Dmit3Y
()
Ответ на: комментарий от Dmit3Y

Но тогда, если в клиенте подсунуть хэш пароля, можно получить доступ к почте. Не знаю насколько это для вас критично.

да в том и проблема, что в клиенте хорошо бы пароль подсовывать. В общем надо как сейчас, только чтобы без plain text паролей в базе. Как простой вариант - зашифровать их чем-нибудь симметричным.

RedPossum ★★★★★
() автор топика
Ответ на: комментарий от Dmit3Y

не получится использовать не plain-text аутентификацию, потому как

With success/failure password databases (e.g. PAM) it's not possible to use non-plaintext mechanisms at all

RedPossum ★★★★★
() автор топика
Ответ на: комментарий от RedPossum

Так в клиенте чистый пароль и подсовывать. Просто если с таким запросом в клиенте подсунуть не чистый пароль, а его хэш, то сервер тоже пустит его.

Dmit3Y
()

качестве клиента для почты прикручен к django приложению roundcube

не проще ли прикрутить какой-нибудь джанговый веб-интерфейс для почты? все костыли убираются одним махом.

Komintern ★★★★★
()
Последнее исправление: Komintern (всего исправлений: 1)
Ответ на: комментарий от Komintern

не проще ли прикрутить какой-нибудь джанговый веб-интерфейс для почты? все костыли убираются одним махом.

если подскажешь такой, я буду безмерно благодарен. Из тех 2,5 что нашел все кривые да мертвые

RedPossum ★★★★★
() автор топика
Ответ на: комментарий от RedPossum

нагугливаются только два, и у django-webmail последний коммит - прошлогодний. стоит попробовать поставить и потыкать.
а как насчет такой идеи - вместо аутентификационного запроса пароля (SELECT password from users where user...) - использовать хранимую процедуру, в которую передавать кто и откуда обращается. думаю в dovecot это возможно.

Komintern ★★★★★
()
Последнее исправление: Komintern (всего исправлений: 1)
Ответ на: комментарий от Komintern

К сожалению, веб-интерфейсы почты для джанго никакие.
И в этом случае, костыли с RoundCube немного оправданы...
Да и как ни крути, веб-интерфейсу на джанго тоже придется что-то передавать серверу, а именно пароль.

Dmit3Y
()
Ответ на: комментарий от Komintern

думаю в dovecot это возможно.

курю маны не нашел ничего похожего.

django-webmail

попробовал - недоделан совсем.

RedPossum ★★★★★
() автор топика
Ответ на: комментарий от Dmit3Y

это меня кстати очень удивляет, т.к и форумные движки в общем-то не очень, pybbm самый вменяемый на мой взгляд.
в то же время на ужасном пыхпыхе есть вполне достойные и веб-почты, и форумы. что это - отсутствие желающих это писать? или недостаточно желающих использовать? по идее написать форум или веб-почту на джанге должно быть в разы проще чем на пыхпыхе.

Komintern ★★★★★
()
Ответ на: комментарий от Komintern

Таки уже оффтоп.
Однако, я с вами согласен.
Просто php используется везде: от самых маленьких сайтов, до крупных сервисов. Джанго, преимущественно, на крупных или более-менее серьезных проектах, которые могут позволить себе разработку того же интерфейса для почты. Учитывая, что задача не такая уж и сложная. (На php, имхо, гораздо сложнее решается.)

Dmit3Y
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.