Django: ищет реализацию бэкэнда ldap db (или любую помощь по этому поводу)

После этого post (я искал библиотеку, позволяющую мне для объявления моделей Django на сервере ldap), я решил использовать ldapdb. Поиграв некоторое время с этой библиотекой, я понял, что она не достигает нужного мне уровня управления, и поэтому я ищу другие решения. Сейчас я думаю о реализации бэкэнда Django db на основе python-ldap.


РЕДАКТИРОВАТЬ

Мне это нужно, потому что в настоящее время я реализую систему управления пользователями/группами в каталоге ldap (для этого требуется возможность манипулировать не только пользователями, но и различными классами объектов ldap). В общем, я хотел бы иметь возможность использовать (почти) полную форму Django, но с бэкэндом ldap.

Поскольку я люблю Django (и был бы весьма заинтересован в изучении грязных низкоуровневых подробностей db.backends), и поскольку в этом проекте уже реализовано много вещей, я хотел бы придерживаться Django (если только кто-то не очень веская причина, почему я не должен, и очень хорошая альтернатива!).


  • У кого-то из вас есть более простое решение этой проблемы?
  • Кто-нибудь из вас знает о реализации такой вещи (бэкэнд ldap db)?
  • Кто-нибудь из вас знает несколько хороших книг, чтобы начать «внедрение бэкэнда Django db»?
  • Кто-то из вас заинтересован в том, чтобы помочь с этим проектом?

person sebpiq    schedule 02.11.2010    source источник
comment
Django не очень хорош для баз данных, отличных от SQL. Пожалуйста, скажите нам, зачем вам это нужно, чтобы мы могли дать лучший совет.   -  person Paulo Scardine    schedule 02.11.2010
comment
@Paulo Scardine: В настоящее время я внедряю систему управления пользователями/группами в каталоге ldap. И поскольку я люблю Django (и Python) и поскольку уже реализовано много кода, я хотел бы придерживаться использования Django (или вы можете предложить действительно более простое решение?).   -  person sebpiq    schedule 02.11.2010
comment
@sebpiq: даже если бы у меня было много свободного времени, я бы сейчас не стал писать не-SQL бэкенд для Django. Если это просто управление пользователями/группами, я бы написал несколько форм и напрямую использовал python-ldap.   -  person Paulo Scardine    schedule 02.11.2010
comment
@Paulo Scardine: квест ??? Это так много работы? На самом деле... этот проект довольно большой, и это немногим больше, чем несколько групп и пользователей. Поэтому я подумал, что вместо того, чтобы писать много очень конкретного кода, почему бы не попытаться сделать это должным образом и попытаться найти людей для совместной работы? Что Вы думаете об этом ? У вас есть опыт написания не-rel бэкэндов?   -  person sebpiq    schedule 02.11.2010
comment
@sebpiq: ИМХО, написание нового бэкэнда SQL должно быть простым, но потребуется еще несколько версий, прежде чем у Django появятся надлежащие основы для поддержки простой разработки бэкэндов, отличных от SQL. До тех пор, пока задача не станет тяжелой, каждый сервер, отличный от SQL, страдает теми же причудами, что и ldapdb.   -  person Paulo Scardine    schedule 03.11.2010
comment
@Paulo Scardine: Хорошо :-( ... Ну ... это немного грустно! Думаю, я опубликую для пользователей django, просто чтобы посмотреть, не реализовал ли кто-нибудь (или начал) такую ​​​​вещь ... для меня ЗНАЮ, что некоторые люди уже думали об этом. Я читал несколько постов, где ребята рассказывали: Мы реализовали это для нашего проекта, но они оставляют код для себя, или это было бы круто иметь это!. Если бы я этого не сделал есть интересный ответ, тогда я просто сделаю, как вы предложили: несколько классов на основе python-ldap.   -  person sebpiq    schedule 03.11.2010


Ответы (3)


Вы делаете много смелых заявлений, таких как «много вещей сломано из-за того, как это реализовано» и «подклассы очень и очень далеки от завершения», не могли бы вы уточнить их? Как автор django-ldapdb, я буду рад вашим предложениям относительно того, что вы хотели бы изменить/исправить, для этого и существует список рассылки django-ldapdb!

К вашему сведению, я выбрал подкласс класса Model, потому что обычно вы хотите иметь только пару моделей, использующих серверную часть LDAP, а не все модели в вашем приложении, а django 1.1 не поддерживает несколько баз данных. Кроме того, LDAP сильно отличается от существующих серверных частей SQL:

  • не является реляционной базой данных
  • он не "плоский", он древовидный
  • истинный «первичный ключ» для записи - это отличительное имя (DN), которое не является фактическим полем, а значением, вычисленным из других полей.
  • поля могут быть многозначными

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

person Jeremy    schedule 25.12.2010
comment
Привет Джереми! Мне очень жаль, что я был немного несправедлив по отношению к django-ldapdb. На самом деле, я использовал его раньше в нескольких других проектах, и он работал очень хорошо. Однако проект, над которым я сейчас работаю, имеет гораздо большие потребности (это менеджер ldap), поэтому django-ldapdb было недостаточно. Сначала я пытался улучшить его, включив в него нужные мне функции, но в итоге получилось довольно хакерски. Поэтому я запустил свой собственный ldap-ом, привязанный к django. Теперь он работает довольно хорошо, и его преимущество в том, что он аккуратнее, поскольку я не ограничен ORM django. Скоро дам ссылку на репозиторий. - person sebpiq; 03.01.2011
comment
Возможно, вам будет интересно узнать, что django-ldap теперь является правильным сервером базы данных! - person Jeremy; 03.05.2011
comment
Замечательно !!! Но так грустно, что для меня это слишком поздно ... Я уже реализовал какой-то объектный картограф и потерял огромное количество времени, потому что он не тесно связан с django orm ... - person sebpiq; 04.05.2011

Лучше всего, вероятно, написать серверную часть аутентификации для приложения. Вот некоторая документация об этом:

http://docs.djangoproject.com/en/dev/topics/auth/?from=olddocs#writing-an-authentication-backend

А вот статья, в которой объясняется, как расширить модель User, чтобы вы могли беспрепятственно использовать этот бэкэнд аутентификации:

http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/

person Community    schedule 02.11.2010
comment
Спасибо... но я уже написал несколько бэкендов, и я знаю, что мне нужно гораздо больше, чем это. Дело в том, что я хочу иметь возможность манипулировать любым ldap-объектом с помощью django orm. Таким образом, это включает, конечно, пользователей, но также и любой другой пользовательский объект. - person sebpiq; 02.11.2010

Кажется, что действительно хорошего решения нет. И делать все без Django ORM тоже не очень хорошее решение.

Вскоре я предприму новую попытку решить эту проблему с помощью решения на основе django-orm.

person sebpiq    schedule 09.02.2012