This is a quick python script showing how the flask-ldap3-login module can be used to authenticate and gather user attribute values
from flask_ldap3_login import LDAP3LoginManager from ldap3 import Tls import ssl config = dict() config['LDAP_HOST'] = 'ad.example.com' # Use SSL unless you are debugging a problem. Clear text port is 389 and tls_ctx needs to be removed from add_server call config['LDAP_USE_SSL'] = True config['LDAP_PORT'] = 636 # Base DN config['LDAP_BASE_DN'] = 'dc=example,dc=com' # User Base DN, prepended to Base DN config['LDAP_USER_DN'] = 'ou=UserDN' # Groups Base DN, prepended to Base DN config['LDAP_GROUP_DN'] = 'ou=SecurityGroupDN' # Server will be manually added to establish SSL config['LDAP_ADD_SERVER'] = False # Domain component of userprincipal name config['LDAP_BIND_DIRECT_SUFFIX'] = '@example.com' # Search scope needs to be subtree config['LDAP_USER_SEARCH_SCOPE'] = "SUBTREE" # Attributes to return config['LDAP_GET_USER_ATTRIBUTES'] = ("mail", "givenName", "sn") # Setup a LDAP3 Login Manager. ldap_manager = LDAP3LoginManager() # Init the mamager with the config since we aren't using an app ldap_manager.init_config(config) # TLS settings to establish trust without validating CA issuance chain. # Can use CERT_REQUIRED and ca_certs_file with path to cacerts that includes issuing chain tls_ctx = Tls( validate=ssl.CERT_NONE, version=ssl.PROTOCOL_TLSv1, valid_names=[ 'ad.example.com', ] ) ldap_manager.add_server( config.get('LDAP_HOST'), config.get('LDAP_PORT'), config.get('LDAP_USE_SSL'), tls_ctx=tls_ctx ) # Validate credentials response = ldap_manager.authenticate_direct_credentials('e0012345', 'P@s5w0rdG03sH3re') print(response.status) print(response.user_info)