Issue #124: LDAP login 500 Internal Server Error if attribute mail is used. (conservancy/kallithea)

Alexey Vasiliev issues-reply at bitbucket.org
Wed Apr 15 12:06:15 EDT 2015


New issue 124: LDAP login 500 Internal Server Error if attribute mail is used.
https://bitbucket.org/conservancy/kallithea/issue/124/ldap-login-500-internal-server-error-if

Alexey Vasiliev:

Ldap module configured to connect to AD ldap port 3268 (objectClass=*) 
Login attribute sAMAccountName Subtree
email attribyte in AD is mail. 
If that attribute filled in config Email Attribute : mail 
all LDAP users with mail address cannot login to kallithea with error 500 (users who don't have email still can login)

Please find below the error in log:

2015-04-15 18:45:18.245 INFO  [kallithea.lib.auth_modules] Authenticating user using kallithea.lib.auth_modules.auth_ldap plugin
2015-04-15 18:45:18.408 INFO  [kallithea.lib.auth_modules.auth_ldap] user alexey authenticated correctly
Error - <class 'sqlalchemy.exc.IntegrityError'>: (IntegrityError) UNIQUE constraint failed: users.email u'UPDATE users SET password=?, email=? WHERE users.user_id = ?' ('$2a$10$fJ.JA4IemdQLsJsOzKqDvOItcr4tJ1D6JQSA0c4FLg/6JecFThVXu', 'alexey.vasiliev at company.com', 3)
URL: http://kallithea:5000/_admin/login?came_from=%2F
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/weberror/errormiddleware.py', line 162 in __call__
  app_iter = self.application(environ, sr_checker)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/beaker/middleware.py', line 155 in __call__
  return self.wrap_app(environ, session_start_response)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/routes/middleware.py', line 131 in __call__
  response = self.app(environ, start_response)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 107 in __call__
  response = self.dispatch(controller, environ, start_response)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 312 in dispatch
  return controller(environ, start_response)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/base.py', line 383 in __call__
  return WSGIController.__call__(self, environ, start_response)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 211 in __call__
  response = self._dispatch_call()
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 162 in _dispatch_call
  response = self._inspect_call(func)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 105 in _inspect_call
  result = self._perform_call(func, args)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 57 in _perform_call
  return func(**args)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/kallithea/controllers/login.py', line 122 in index
  c.form_result = login_form.to_python(dict(request.POST))
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/formencode/api.py', line 439 in to_python
  value = tp(value, state)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/formencode/schema.py', line 226 in _to_python
  new = validator.to_python(new, state)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/formencode/api.py', line 442 in to_python
  vp(value, state)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/kallithea/model/validators.py', line 319 in validate_python
  if not auth_modules.authenticate(username, password):
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/auth_modules/__init__.py', line 408 in authenticate
  environ=environ or {})
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/kallithea/lib/auth_modules/__init__.py', line 293 in _authenticate
  Session().flush()
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py', line 1734 in flush
  self._flush(objects)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py', line 1805 in _flush
  flush_context.execute()
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py', line 331 in execute
  rec.execute(self)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py', line 475 in execute
  uow
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py', line 59 in save_obj
  mapper, table, update)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py', line 485 in _emit_update_statements
  execute(statement, params)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py', line 1449 in execute
  params)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py', line 1584 in _execute_clauseelement
  compiled_sql, distilled_params
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py', line 1698 in _execute_context
  context)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py', line 1691 in _execute_context
  context)
File '/opt/kallithea/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py', line 331 in do_execute
  cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) UNIQUE constraint failed: users.email u'UPDATE users SET password=?, email=? WHERE users.user_id = ?' ('$2a$10$fJ.JA4IemdQLsJsOzKqDvOItcr4tJ1D6JQSA0c4FLg/6JecFThVXu', 'alexey.vasiliev at company.com', 3)


CGI Variables
-------------
  CONTENT_TYPE: 'application/x-www-form-urlencoded; charset="utf-8"'
  HTTP_ACCEPT: 'text/html, text/*;q=0.9, image/jpeg;q=0.9, image/png;q=0.9, image/*;q=0.9, */*;q=0.8'
  HTTP_ACCEPT_CHARSET: 'utf-8,*;q=0.5'
  HTTP_ACCEPT_ENCODING: 'gzip, deflate, x-gzip, x-deflate'
  HTTP_ACCEPT_LANGUAGE: 'ru,en-US;q=0.9,en;q=0.8'
  HTTP_CACHE_CONTROL: 'no-cache'
  HTTP_CONNECTION: 'keep-alive'
  HTTP_COOKIE: 'kallithea=9e28e83b95427ef79085741f73bf009c3280713e2d08fc1812ab4cbd9060e0238607feda'
  HTTP_HOST: 'kallithea:5000'
  HTTP_PRAGMA: 'no-cache'
  HTTP_REFERER: 'http://kallithea:5000/'
  HTTP_USER_AGENT: 'Mozilla/5.0 (X11; Linux x86_64) KHTML/4.14.3 (like Gecko) Konqueror/4.14'
  PATH_INFO: '/_admin/login'
  QUERY_STRING: 'came_from=%2F'
  REMOTE_ADDR: '192.168.1.1'
  REQUEST_METHOD: 'POST'
  SERVER_NAME: 'localhost'
  SERVER_PORT: '5000'
  SERVER_PROTOCOL: 'HTTP/1.1'
  SERVER_SOFTWARE: 'waitress'


WSGI Variables
--------------
  application: <beaker.middleware.SessionMiddleware object at 0x7f175589d550>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f175589d550>>
  beaker.session: {'_accessed_time': 1429112718.181142, '_creation_time': 1429112718.181142}
  paste.parsed_querystring: ([('came_from', '/')], 'came_from=%2F')
  paste.registry: <paste.registry.Registry object at 0x7f174eb5ead0>
  paste.throw_errors: True
  pylons.action_method: <bound method LoginController.index of <kallithea.controllers.login.LoginController object at 0x7f174ecfca10>>
  pylons.controller: <kallithea.controllers.login.LoginController object at 0x7f174ecfca10>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x7f174ecfcfd0>
  pylons.routes_dict: {'action': u'index', 'controller': u'login'}
  routes.route: <routes.route.Route object at 0x7f1755f44390>
  routes.url: <routes.util.URLGenerator object at 0x7f174ec63ed0>
  webob._parsed_post_vars: (MultiDict([('_authentication_token', '130779523276473337233051272781982439844'), ('username', 'alexey'), ('password', '******'), ('sign_in', 'Log In')]), <FakeCGIBody at 0x7f174ec63750 viewing MultiDict([('_a...n')])>)
  webob._parsed_query_vars: (GET([('came_from', '/')]), 'came_from=%2F')
  webob.adhoc_attrs: {'errors': 'ignore', 'user': <AuthUser('id:1[default] ip:192.168.1.1 auth:True')>, 'language': 'en-us'}
  webob.is_body_readable: True
  webob.is_body_seekable: False
  wsgi process: 'Multithreaded'
  wsgi.file_wrapper: <class 'waitress.buffers.ReadOnlyFileBasedBuffer'>
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7f174ec63ed0>, {'action': u'index', 'controller': u'login'})
------------------------------------------------------------





More information about the kallithea-general mailing list