def create_app(self): app = flask.Flask(__name__) LDAP = dict(BIND_DN='x=%(username)s') app.config.update(LDAP=LDAP) app.config['SECRET_KEY'] = 'abc123' mgr = LDAPLoginManager(app) mgr.save_user(self.save_user) return app
def test_direct_bind_keymap(self): LDAP = dict(BIND_DN="x=%(username)s", KEY_MAP={"transformed_key": "key"}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind("user1", "pass1") self.assertIsNotNone(result) self.assertEqual(result, {"transformed_key": "value1"})
def test_direct_bind_keymap(self): LDAP = dict(BIND_DN='x=%(username)s', KEY_MAP={'transformed_key':'key'}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'transformed_key': 'value1'})
def test_direct_bind(self): LDAP = dict(BIND_DN="x=%(username)s") self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind("username", "password") self.assertIsNone(result) result = loginmanager.direct_bind("user1", "pass1") self.assertIsNotNone(result) self.assertEqual(result, {"key": "value1", "uid": "user1"})
def test_direct_bind_keymap(self): LDAP = dict(BIND_DN='x=%(username)s', KEY_MAP={'transformed_key': 'key'}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'transformed_key': 'value1'})
def create_app(self): app = flask.Flask(__name__) app.config['DEBUG'] = True app.config['TESTING'] = True app.config['WTF_CSRF_ENABLED'] = False ldap_dict = dict(BIND_DN='x=%(username)s') app.config.update(LDAP=ldap_dict) app.config['SECRET_KEY'] = 'abc123' mgr = LDAPLoginManager(app) mgr.save_user(self.save_user) return app
def test_direct_bind(self): LDAP = dict(BIND_DN='x=%(username)s') self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind('username', 'password') self.assertIsNone(result) result = loginmanager.direct_bind('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'dn': 'x=user1', 'key': 'value1', 'uid': 'user1'})
def test_bind_search_keymap(self): LDAP = dict(BIND_DN='x=user1', BIND_AUTH='pass1', USER_SEARCH=[{'base':'base', 'filter':'uid=%(username)s'}], KEY_MAP={'transformed_key':'key'}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'transformed_key': 'value1'})
def test_bind_search_keymap(self): LDAP = dict( BIND_DN="x=user1", BIND_AUTH="pass1", USER_SEARCH=[{"base": "base", "filter": "uid=%(username)s"}], KEY_MAP={"transformed_key": "key"}, ) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search("user1", "pass1") self.assertIsNotNone(result) self.assertEqual(result, {"transformed_key": "value1"})
def test_bind_search(self): """ This test will fail with out the pull request https://github.com/ContinuumIO/flask-ldap-login/pull/6 """ LDAP = dict(BIND_DN="x=user1", BIND_AUTH="pass1", USER_SEARCH=[{"base": "base", "filter": "uid=%(username)s"}]) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search("user1", "pass2") self.assertIsNone(result) result = loginmanager.bind_search("user1", "pass1") self.assertIsNotNone(result) self.assertEqual(result, {"key": "value1", "uid": "user1"})
def test_bind_search_keymap(self): LDAP = dict(BIND_DN='x=user1', BIND_AUTH='pass1', USER_SEARCH=[{ 'base': 'base', 'filter': 'uid=%(username)s' }], KEY_MAP={'transformed_key': 'key'}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'transformed_key': 'value1'})
def test_bind_search(self): """ This test will fail with out the pull request https://github.com/ContinuumIO/flask-ldap-login/pull/6 """ LDAP = dict(BIND_DN='x=user1', BIND_AUTH='pass1', USER_SEARCH=[{'base':'base', 'filter':'uid=%(username)s'}]) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search('user1', 'pass2') self.assertIsNone(result) result = loginmanager.bind_search('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'dn': 'x=user1', 'key': 'value1', 'uid': 'user1'})
def test_bind_search(self): """ This test will fail with out the pull request https://github.com/ContinuumIO/flask-ldap-login/pull/6 """ LDAP = dict(BIND_DN='x=user1', BIND_AUTH='pass1', USER_SEARCH=[{ 'base': 'base', 'filter': 'uid=%(username)s' }]) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search('user1', 'pass2') self.assertIsNone(result) result = loginmanager.bind_search('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, { 'dn': 'x=user1', 'key': 'value1', 'uid': 'user1' })
def test_direct_bind(self): LDAP = dict(BIND_DN='x=%(username)s') self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind('username', 'password') self.assertIsNone(result) result = loginmanager.direct_bind('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'key': 'value1', 'uid': 'user1'})
# Map ldap keys into application specific keys 'KEY_MAP': { 'name': 'cn', 'company': 'o', 'location': 'l', 'email': 'mail', }, } #=============================================================================== # Import existing application #=============================================================================== from examples.base_app import app, User app.config.update(LDAP=LDAP) ldap_mgr = LDAPLoginManager(app) # Store users in memory users = {} @ldap_mgr.save_user def save_user(username, userdata): users[username] = User(username, userdata) return users[username] @app.route('/ldap/login', methods=['GET', 'POST']) def ldap_login(): form = LDAPLoginForm(request.form)
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager from flask_ldap_login import LDAPLoginManager app = Flask(__name__) app.config.from_object('config') db = SQLAlchemy(app) login_manager = LoginManager() login_manager.init_app(app) ldap_mgr = LDAPLoginManager() ldap_mgr.init_app(app) from webapp import views