Mercurial > kallithea
changeset 5657:18c9eb22c29c stable
auth: Fix tomcat throwing '505 HTTP Version Not Supported' when trying to log in to Atlassian Crowd with usernames that contain spaces
If you try to log in to Kallithea via the Crowd auth module, and the username
contains a space, it fails. Tomcat on the Crowd server gives error '505 HTTP
Version Not Supported'.
Further investigation showed that the username was not being quoted. E.g. for
the user 'test account', the REST URL should contain 'test%20account' but
actually was containing 'test account'. When Tomcat received this HTTP request
it interprets the word 'account' as the HTTP version because of the space. This
obviously isn't a valid HTTP version.
This bug is fixed by using urllib2.quote on the username to ensure that special
characters are correctly quoted. After making that change on my local install,
the user 'test account' was able to log in successfully.
author | Robert James Dennington <tinytimrob@googlemail.com> |
---|---|
date | Fri, 15 Jan 2016 14:38:27 +0000 |
parents | 044252c60f95 |
children | dba6c44f0a30 |
files | kallithea/lib/auth_modules/auth_crowd.py |
diffstat | 1 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/auth_modules/auth_crowd.py Thu Jan 07 01:53:04 2016 +0000 +++ b/kallithea/lib/auth_modules/auth_crowd.py Fri Jan 15 14:38:27 2016 +0000 @@ -119,14 +119,14 @@ """Authenticate a user against crowd. Returns brief information about the user.""" url = ("%s/rest/usermanagement/%s/authentication?username=%s" - % (self._uri, self._version, username)) + % (self._uri, self._version, urllib2.quote(username))) body = json.dumps({"value": password}) return self._request(url, body) def user_groups(self, username): """Retrieve a list of groups to which this user belongs.""" url = ("%s/rest/usermanagement/%s/user/group/nested?username=%s" - % (self._uri, self._version, username)) + % (self._uri, self._version, urllib2.quote(username))) return self._request(url)