Skip to content
Snippets Groups Projects
Select Git revision
  • ldapi-support
  • master default
  • v1.3.3
  • v1.4.0
  • v1.3.2
  • v1.3.0
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.1
  • v1.0.0
  • v0.4.0
  • v0.2.0
  • v0.3.0
  • v0.1.1
  • v0.1.0
16 results

flask-simpleldap

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Alexandre Ferland authored
    37a41ee5
    History

    Flask-SimpleLDAP

    Build Status

    Flask-SimpleLDAP provides LDAP authentication for Flask.

    Quickstart

    First, install Flask-SimpleLDAP:

    $ pip install flask-simpleldap

    Flask-SimpleLDAP depends, and will install for you, recent versions of Flask (0.10.1 or later) and pyldap. Flask-SimpleLDAP is compatible with and tested on Python 2.7, 3.4 and 3.5.

    Next, add a LDAP instance to your code and at least the three required configuration options:

    from flask import Flask
    from flask_simpleldap import LDAP
    
    app = Flask(__name__)
    ldap = LDAP(app)
    
    app.config['LDAP_BASE_DN'] = 'OU=users,dc=example,dc=org'
    app.config['LDAP_USERNAME'] = 'CN=user,OU=Users,DC=example,DC=org'
    app.config['LDAP_PASSWORD'] = 'password'
    
    @app.route('/ldap')
    @ldap.login_required
    def ldap_protected():
        return 'Success!'

    You can take a look at examples/groups for a more complete example using LDAP groups.

    You can also take a look at examples/blueprints for an example using Flask's application factories and blueprints.

    OpenLDAP

    Add the LDAP instance to your code and depending on your OpenLDAP configuration, add the following at least LDAP_USER_OBJECT_FILTER and LDAP_USER_OBJECT_FILTER.

    from flask import Flask
    from flask_simpleldap import LDAP
    
    app = Flask(__name__)
    ldap = LDAP(app)
    
    # Base
    app.config['LDAP_REALM_NAME'] = 'OpenLDAP Authentication'
    app.config['LDAP_HOST'] = 'openldap.example.org'
    app.config['LDAP_BASE_DN'] = 'dc=users,dc=openldap,dc=org'
    app.config['LDAP_USERNAME'] = 'cn=user,ou=servauth-users,dc=users,dc=openldap,dc=org'
    app.config['LDAP_PASSWORD'] = 'password'
    
    # OpenLDAP 
    app.config['LDAP_OBJECTS_DN'] = 'dn'
    app.config['LDAP_OPENLDAP'] = True
    app.config['LDAP_USER_OBJECT_FILTER'] = '(&(objectclass=inetOrgPerson)(uid=%s))'
    
    # Groups
    app.config['LDAP_GROUP_MEMBERS_FIELD'] = "uniquemember"
    app.config['LDAP_GROUP_OBJECT_FILTER'] = "(&(objectclass=groupOfUniqueNames)(uniquemember=%s))"
    app.config['LDAP_GROUP_MEMBER_FILTER'] = "(&(cn=*)(objectclass=groupOfUniqueNames)(uniquemember=%s))"
    app.config['LDAP_GROUP_MEMBER_FILTER_FIELD'] = "cn"
    
    @app.route('/ldap')
    @ldap.login_required
    def ldap_protected():
        return 'Success!'

    Migrating from 0.x to 1.x

    The only major change from 0.x releases and 1.x is the underlying LDAP library changed from python-ldap to pyldap which is fork that adds Python 3.x support. Everything else SHOULD be the same, but don't hesitate to open an issue if you encounter some problem upgrading from 0.x to 1.x.

    Resources