Mruby Backend for Openldap

Mruby Backend for Openldap

MRuby Backend for OpenLDAP Open Source Solution Technology Corporation HAMANO Tsukasa <[email protected]> LDAPCon 2017 Brussels October 2017 MRuby Backend for OpenLDAP About OSSTech • ID Management leading company in Japan. • Storage Solution • Open Source Contribution 1 MRuby Backend for OpenLDAP OpenLDAP backend 2 MRuby Backend for OpenLDAP What’s back-perl • define LDAP handlers in Perl • make non-LDAP datastore behave as LDAP server • integrate with cloud services 3 MRuby Backend for OpenLDAP Problem of back-perl 4 MRuby Backend for OpenLDAP I♥Python • Sub-interpreter support Multiple python interpreters can be created in a process. PyThreadState *Py_NewInterpreter() 5 MRuby Backend for OpenLDAP Problem of back-python 6 MRuby Backend for OpenLDAP Ruby Implementations • CRuby(MRI) • JRuby • IronRuby • MRuby ⇐ NEW 7 MRuby Backend for OpenLDAP MRuby Features • Small footprint • Embed to application • Soft realtime • Portability 8 MRuby Backend for OpenLDAP MRuby Virtual Machine 9 MRuby Backend for OpenLDAP back-mruby 10 MRuby Backend for OpenLDAP Building $ git clone -b mruby --depth=1 \ https://github.com/osstech-jp/openldap $ cd openldap $ autoconf $ ./configure --enable-mruby $ make Requires: wget, bison, git, ruby 11 MRuby Backend for OpenLDAP Configuration In slapd.conf: rubyfile example.rb 12 MRuby Backend for OpenLDAP Tutorial: bind def bind(op) if rand(2) == 0 LDAP_SUCCESS else LDAP_INVALID_CREDENTIALS end end 13 MRuby Backend for OpenLDAP Tutorial: bind def bind(op) users = { 'uid=alice,dc=example,dc=com' => 'secret1', 'uid=bob,dc=example,dc=com' => 'secret2', } ndn = op['ndn'] if users[ndn] == op['req']['cred'] LDAP_SUCCESS else LDAP_INVALID_CREDENTIALS end end 14 MRuby Backend for OpenLDAP Tutorial: search def search(op) scope = op["req"]["scope"] if scope == LDAP_SCOPE_BASE search_base(op) elsif scope == LDAP_SCOPE_ONE search_one(op) else LDAP_NO_SUCH_OBJECT end end 15 MRuby Backend for OpenLDAP Tutorial: search # Returns base entry. def search_base(op) ldif = <<END_OF_LDIF dn: dc=example,dc=com objectClass: top objectClass: dcObject objectClass: organization dc: example o: example END_OF_LDIF [ ldif ] end 16 MRuby Backend for OpenLDAP Tutorial: search # Returns two user entries. def search_one(op) entries = [] ldif = <<END_OF_LDIF dn: uid=%s,dc=example,dc=com objectClass: top objectClass: account uid: %s END_OF_LDIF entries << ldif % (["alice"]* 2) entries << ldif % (["bob"]* 2) entries end 17 MRuby Backend for OpenLDAP Tutorial: add def add(op) p op # do the cooking LDAP_SUCCESS end 18 MRuby Backend for OpenLDAP Google G Suite Backend 19 MRuby Backend for OpenLDAP Just Idea • Amazon DynamoDB • Google Cloud Storage • NoSQL, RDBMS • Salesforce 20 MRuby Backend for OpenLDAP Future tasks • Reusing VM • Pagenation • modify, modrdn 21 MRuby Backend for OpenLDAP Other Works • PBKDF2 module • Datadog Agent • WiredTiger Backend 22.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    23 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us