Skip to content

ldap: AttributeError: module 'ldap' has no attribute 'filter' #68477

Description

@dramis

Under which category would you file this issue?

Providers

Apache Airflow version

3.2.2

What happened and how to reproduce it?

Users are unable to log in to the Apache Airflow web interface when LDAP authentication is configured as the backend. The login page loads normally, but submitting valid credentials results in an internal server error. No successful LDAP authentication occurs.

Error:
Jun 12 13:09:52 fondor airflow[5382]: [2026-06-12T17:09:52.820727Z] {app.py:875} ERROR - Exception on /login/ [POST] Jun 12 13:09:52 fondor airflow[5382]: Traceback (most recent call last): Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app Jun 12 13:09:52 fondor airflow[5382]: response = self.full_dispatch_request() Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request Jun 12 13:09:52 fondor airflow[5382]: rv = self.handle_user_exception(e) Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request Jun 12 13:09:52 fondor airflow[5382]: rv = self.dispatch_request() Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request Jun 12 13:09:52 fondor airflow[5382]: return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] Jun 12 13:09:52 fondor airflow[5382]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/flask_appbuilder/security/decorators.py", line 36, in wrapped_view Jun 12 13:09:52 fondor airflow[5382]: response = make_response(view(*args, **kwargs)) Jun 12 13:09:52 fondor airflow[5382]: ~~~~^^^^^^^^^^^^^^^^^ Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/flask_appbuilder/security/views.py", line 649, in login Jun 12 13:09:52 fondor airflow[5382]: user = self.appbuilder.sm.auth_user_ldap( Jun 12 13:09:52 fondor airflow[5382]: form.username.data, form.password.data Jun 12 13:09:52 fondor airflow[5382]: ) Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/airflow/providers/fab/auth_manager/security_manager/override.py", line 1981, in auth_user_ldap Jun 12 13:09:52 fondor airflow[5382]: user_dn, user_attributes = self._search_ldap(ldap, con, username) Jun 12 13:09:52 fondor airflow[5382]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ Jun 12 13:09:52 fondor airflow[5382]: File "/opt/airflow/venv/lib/python3.13/site-packages/airflow/providers/fab/auth_manager/security_manager/override.py", line 2473, in _search_ldap Jun 12 13:09:52 fondor airflow[5382]: escaped_username = ldap.filter.escape_filter_chars(username) Jun 12 13:09:52 fondor airflow[5382]: ^^^^^^^^^^^ Jun 12 13:09:52 fondor airflow[5382]: AttributeError: module 'ldap' has no attribute 'filter'

What you think should happen instead?

Users with valid LDAP credentials should be authenticated and redirected to the Airflow dashboard.

Operating System

debian 13.5

Deployment

Virtualenv installation

Apache Airflow Provider(s)

fab

Versions of Apache Airflow Providers

apache-airflow-providers-amazon==9.30.0
apache-airflow-providers-common-compat==1.15.0
apache-airflow-providers-common-io==1.7.3
apache-airflow-providers-common-sql==2.0.1
apache-airflow-providers-elasticsearch==6.6.0
apache-airflow-providers-fab==3.6.5
apache-airflow-providers-git==0.4.0
apache-airflow-providers-http==6.0.3
apache-airflow-providers-postgres==6.7.1
apache-airflow-providers-samba==4.12.6
apache-airflow-providers-smtp==3.0.1
apache-airflow-providers-ssh==5.0.2
apache-airflow-providers-standard==1.14.0

Official Helm Chart version

Not Applicable

Kubernetes Version

No response

Helm Chart configuration

No response

Docker Image customizations

No response

Anything else?

A one-line patch has been applied directly to override.py using sed to inject the missing import statement. This restores LDAP login functionality immediately without requiring a provider downgrade.

Command applied on the fondor server:
sed -i 's/^import ldap$/import ldap\nimport ldap.filter/'
$(python -c "import importlib; import os; m = importlib.import_module(
'airflow.providers.fab.auth_manager.security_manager.override');
print(os.path.abspath(m.file))")

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions