auth.py 840 B

1234567891011121314151617181920212223
  1. import os
  2. from typing import Optional
  3. from ldap3 import ALL, NTLM, Connection, Server
  4. def ldap_authenticate(username: str, password: str) -> Optional[dict]:
  5. ldap_url = os.environ.get("LDAP_URL")
  6. ldap_user_dn = os.environ.get("LDAP_USER_DN")
  7. ldap_base = os.environ.get("LDAP_BASE_DN")
  8. if not ldap_url:
  9. # Fallback mock for local development: accept any user with password 'password'
  10. if password == "password":
  11. return {"username": username, "groups": ["local"]}
  12. return None
  13. try:
  14. server = Server(ldap_url, get_info=ALL)
  15. conn = Connection(server, user=username, password=password, auto_bind=True)
  16. # Simple success -> return username; group resolution left for future
  17. return {"username": username, "groups": []}
  18. except Exception:
  19. return None