Consistently apply SASLprep to passwords and handle SASLprep errors gracefully
Original title: Using a Mail Address as Login Name Results in a 500
[2021-08-16 19:51:16,572] ERROR in app: Exception on /login [POST]
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./uffd/session/views.py", line 95, in login
user = login_get_user(username, password)
File "./uffd/session/views.py", line 40, in login_get_user
if not test_user_bind(dn, password):
File "./uffd/ldap.py", line 74, in test_user_bind
conn = connect_and_bind_to_ldap(server, bind_dn, bind_pw)
File "./uffd/ldap.py", line 95, in connect_and_bind_to_ldap
if not connection.bind(read_server_info=True):
File "/usr/lib/python3/dist-packages/ldap3/core/connection.py", line 536, in bind
request = bind_operation(self.version, self.authentication, self.user, self.password, auto_encode=self.auto_encode)
File "/usr/lib/python3/dist-packages/ldap3/operation/bind.py", line 57, in bind_operation
request['authentication'] = AuthenticationChoice().setComponentByName('simple', Simple(validate_simple_password(password)))
File "/usr/lib/python3/dist-packages/ldap3/protocol/sasl/sasl.py", line 136, in validate_simple_password
password = sasl_prep(password)
File "/usr/lib/python3/dist-packages/ldap3/protocol/sasl/sasl.py", line 78, in sasl_prep
raise LDAPSASLPrepError('SASLprep error: ASCII control character present')
ldap3.core.exceptions.LDAPSASLPrepError: SASLprep error: ASCII control character present
Edited by Julian