3256: unable to log in (http 500) when using ldap auth backend + unicode password

walt.******@gmai***** (Google Code) (Is this you? Claim this profile.)
david
david
Feb. 20, 2014
What version are you running?

RB 1.7.21



What's the URL of the page containing the problem?

https://reviewboard/account/login



What steps will reproduce the problem?

1. Configure Review Board with an Active Directory authentication backend
   (https://reviewboard/admin/settings/authentication/)

2. In Active Directory (not the RB Active Directory settings, but in the
   actual AD info), set up an account with a password that contains a
   non-ascii unicode character.

3. Attempt to login to Review Board with the AD account that has a unicode
   password.

I will work to see if I can find a more precise and concise repo.



What is the expected output?

I would expect to log in to Review Board successfully.



What do you see instead?

The client sees "500 Server Error".

When I check in the server-side Review Board logs I see the following traceback:

2014-01-30 15:02:12,208 - DEBUG -  - User username@ad.mycorp.com is trying to log in via AD
2014-01-30 15:02:12,209 - ERROR -  - Exception thrown for user AnonymousUser at https://reviewboard.mycorp.com/account/login/

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 8: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/views/decorators/debug.py", line 75, in sensitive_post_parameters_wrapper
    return view(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/views/decorators/cache.py", line 89, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/contrib/auth/views.py", line 36, in login
    if form.is_valid():
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/forms/forms.py", line 124, in is_valid
    return self.is_bound and not bool(self.errors)
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/forms/forms.py", line 115, in _get_errors
    self.full_clean()
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/forms/forms.py", line 271, in full_clean
    self._clean_form()
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/forms/forms.py", line 299, in _clean_form
    self.cleaned_data = self.clean()
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/contrib/auth/forms.py", line 167, in clean
    password=password)
  File "/usr/lib/python2.6/site-packages/Django-1.4.10-py2.6.egg/django/contrib/auth/__init__.py", line 45, in authenticate
    user = backend.authenticate(**credentials)
  File "/usr/lib/python2.6/site-packages/ReviewBoard-1.7.21-py2.6.egg/reviewboard/accounts/backends.py", line 539, in authenticate
    con.simple_bind_s(bind_username, password)
  File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 206, in simple_bind_s
    msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
  File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 200, in simple_bind
    return self._ldap_call(self._l.simple_bind,who,cred,EncodeControlTuples(serverctrls),EncodeControlTuples(clientctrls))
  File "/usr/lib64/python2.6/site-packages/ldap/ldapobject.py", line 96, in _ldap_call
    result = func(*args,**kwargs)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 8: ordinal not in range(128)



What operating system are you using? What browser?

The RB server is running on CentOS 6.2 behind apache with mod wsgi.

The client is:

Chromium 30.0.1599.114 Ubuntu 12.04 (30.0.1599.114-0ubuntu0.12.04.3)
I've been able to repro this issue with other browsers as well though, and believe this isn't related to the client.



Please provide any additional information below.

I have not yet tried having a unicode character in the AD username.  Only the password.
david
#1 david
  • +PendingReview
  • +Component-Accounts
  • +david
david
#2 david
Fixed in release-1.7.x (55b7c92). Thanks!
  • -PendingReview
    +Fixed