Am 03.05.2015 um 14:03 schrieb bret curtis:
Hello there,

if you wish to make a pull request, file a bug report or ask Ldaptor specific questions, you can contact the developer directly here:
https://github.com/twisted/ldaptor/issues

Not everyone who works on Ldaptor is a member of this mailing list.

Okay. I was not sure if it's okay to ask questions via the issue tracker. :)


I'll try to answer inline:

On Sat, May 2, 2015 at 12:37 PM, <the...@otpme.org <mailto:the...@otpme.org>> wrote:


    i'm currently investigating how to add ldap server support to
    OTPme (https://www.otpme.org) as i want to extend it to be a
    complete authentication/authorization system including some kind
    of directory service. so i started working on integration with
    ldaptor. my first problem, adding search support, is partly solved
    now. i've checked ldifftree.py and after some debugging i got a
    search() method that is able to do an indexed search of OTPme's
    directory (which is not in svn yet) which allows fast search
    results for a directory with more than 2048 users.


Congratulations! :) How are you going about this? Are these additions backwards compatible with OpenLDAP? Are you also writing test-cases to cover these?

Thanks. :) But its still in an early stage.

Currently the ldap support is implemented on top of OTPme's users, groups, units etc. and will be read-only.

I've decided to implement it as OTPme extensions e.g. a "base" extension that handles object classes like "dcObject", "organizationalUnit", "inetOrgPerson" etc. and an "posix" extension for "posixAccount", "posixGroup" and so on. the extensions will also do things like uidNumber/gidNumber allocation etc.

An extension also automatically adds the needed objectClass if the attribute the admin adds to a user needs it. if the admin disables an extension (e.g. posix or maybe samba later) for a user the corresponding ldap attributes are no longer visible via ldap(tor) but not removed from the user so they can be re-enabled if needed. To resolve the attribute <> objectClass dependencies i've written a simple (and maybe incomplete ;)) parser that can read openldap's schema files using http://www.python-ldap.org/doc/html/ldap-schema.html#module-ldap.schema

The OTPme specific attributes (tokens, timeout values etc.) are not implemented as ldap objects/attributes. The main reason for this is that i didn't had any plan about the features that OTPme will have as i started writing it a few months ago. I decided to learn python as my first language in december last year and just wanted write anything useful. it all started with the goal to implement http://motp.sourceforge.net/ in python. :)

So atm i haven't done anything more than writing a class (staring at the magic of ldiftree.py and friends ;)) that gets all needed objects, attributes etc. from the OTPme backend as ldif and that can do an indexed search using an OTPme function. This class basically works with ldaptor. The OTPme backend is implemented using flat files with some in-memory caching feature. It also supports AES encryption and i started writing an master/slave synchronization for it that should be later used to add some kind of cluster support to OTPme.

Maybe i'll implement all OTPme objects (tokens etc.) as ldap objects/attributes some day because this would make it possible to also get them from an external ldap server like openldap. But this also means that i need to create a OTPme schema that can be used with an ldap server like openldap. so i'm not sure if i'll go this road because not everyone can/wants to add a schema extension. Another idea would be to synchronize users from e.g. openldap and add them to OTPme/ldaptor. But all of this is not on my current todo.

Continuous integration is on my todo but as there are so many things to learn when one wants to learn wrinting software i haven't found the time yet.

    but as this is just a start there will be more problems to solve i
    guess.


There always are, when I first started using Ldaptor, startTLS was broken which was a requirement for me to do any work with it.

    one issue i have is that an ldapsearch against ldaptor which
    requests just some attributes instead of all always returns all
    object attributes.
    for example the ldapsearch below returns the complete ldif of each
    found user in ldaptor (tested also with ldiftree.py):
    ldapsearch -H ldap://localhost:8080 -b
    "ou=users,dc=domain,dc=intern" -w abcd -x '(uid=*)' givenName
    Running the same search against my openldap server it returns just
    the dn and givenName attributes of each found user.
    Is this a missing feature or do i just miss something in my db class?


Please file an issue on github with an example (ldif entries in a txt file would work) that can be used to test with a real OpenLDAP server. Then the ldapsearch like you provided above and a snippit of your ldaptor code so we can try to reproduce it.

Done: https://github.com/twisted/ldaptor/issues/38

    another important part i haven't looked at yet is how to implement
    authentication. as OTPme focus on OTPs i dont want to add any user
    passwords to the ldap tree. the smoothest solution would be to get
    username+OTP from ldaptor to do authentication. maybe you can give
    me some hints in the right direction? :)

Another issue/question for github, there are others that have spent more time in this area of the codebase.


Done: https://github.com/twisted/ldaptor/issues/39


    and the last question for now is related the licensing. OTPme is
    licensed under GPLv2. do i run into any licensing issues when
    using ldaptor with OTPme?


Ldaptor is MIT/Expat license, if you would like to commit code then that too must be MIT/Expat otherwise it won't be accepted. As for using Ldaptor to talk with OTPme, there shouldn't be a license problem as they are two separate applications/services. What exactly is your concern there?

I dont have any special concern. I'm just new to all of this and wanted to make sure it's okay to use ldaptor it with an GPL'ed software.

And if i ever will (be able to ;)) commit any code to ldaptor i'm fine with the MIT/Expat license. :)


    regards
    the2nd


Cheers,
Bret


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to