Я пытаюсь использовать ldap3 для проверки пользователей при входе в мое приложение фляги. Я пробовал каждый параметр конфигурации LDAP, доступный в ldap3 в последние дни, но я не могу заставить его работать. Я уже получаю правильную проверку не удалось вернуть из openldap, когда я вхожу как несуществующий пользователь. Но если я использую существующего пользователя, я также получаю возвращенный результат проверки в сочетании с несколькими другими сообщениями об ошибках в зависимости от настроек конфигурации, которые я пробовал. Любая помощь будет оценена.
class Config(object):
...
LDAP_HOST = 'xxx'
LDAP_BASE_DN = 'xxx'
LDAP_PORT = 7389
LDAP_USER_DN = 'cn=users'
LDAP_GROUP_DN = 'ou=groups'
LDAP_USER_RDN_ATTR = 'uid'
LDAP_USER_LOGIN_ATTR = 'uid'
LDAP_BIND_USER_DN = 'uid'
LDAP_BIND_USER_PASSWORD = 'pwd'
class User(UserMixin,db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
dn = db.Column(db.String(128), index=True)
def __repr__(self):
return '<User {}>'.format(self.username)
@login_manager.user_loader
def load_user(user_id):
return User.query.filter_by(id=user_id).first()
@ldap_manager.save_user
def save_user(dn, username, data, memberships):
user_id=int(data.get("uidNumber"))
user=User.query.filter_by(id=user_id).first()
if not user:
user=User(
id=int(user_id),
username=username,
dn=dn
)
db.session.add(user)
db.session.commit()
return user
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LDAPLoginForm()
if form.validate_on_submit():
print('Valid')
login_user(form.user)
return redirect(url_for('index'))
else:
print('Invalid')
return render_template('login.html', title='Sign In', form=form)
@app.route('/logout')
@login_required
def logout():
db.session.delete(current_user)
db.session.commit()
logout_user()
return redirect(url_for('login'))