indico / indico/flask-multipass

`Unexpected Exception occurred at X: 'group_base'`

Open
#59 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
65
Forks
29
PR merge metrics
No merged PRs in 30d

Description

One user is now actively using our Indico installation based on

$ git log --no-decorate --oneline -1
c6b5a3042a Fix showing nonbookable period outside admin UI

Just now, the logger sent the log below:

```
Unexpected Exception occurred at platsch.molgen.mpg.de: 'group_base'

2022-06-30 18:10:35,693 cddddabd26354a15 2 indico.flask - ERROR errors.py:110 -- 'group_base'

Traceback (most recent call last):
File "/project/indico/home/.local/lib/python3.9/site-packages/flask/app.py", line 1523, in full_dispatch_request
rv = self.dispatch_request()
File "/project/indico/home/.local/lib/python3.9/site-packages/flask/app.py", line 1509, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/project/indico/home/.local/lib/python3.9/site-packages/indico/web/flask/util.py", line 79, in wrapper
return obj().process()
File "/project/indico/home/.local/lib/python3.9/site-packages/indico/web/rh.py", line 281, in process
res = self._do_process()
File "/project/indico/home/.local/lib/python3.9/site-packages/indico/web/rh.py", line 252, in _do_process
rv = self._process()
File "/project/indico/home/.local/lib/python3.9/site-packages/webargs/core.py", line 452, in wrapper
return func(*args, **kwargs)
File "/project/indico/home/.local/lib/python3.9/site-packages/indico/modules/groups/controllers.py", line 158, in _process
groups = GroupProxy.search(name, exact=exact)
File "/project/indico/home/.local/lib/python3.9/site-packages/indico/modules/groups/core.py", line 115, in search
result |= {GroupProxy(g.name, g.provider.name, _group=g)
File "/project/indico/home/.local/lib/python3.9/site-packages/indico/modules/groups/core.py", line 115, in
result |= {GroupProxy(g.name, g.provider.name, _group=g)
File "/project/indico/home/.local/lib/python3.9/site-packages/flask_multipass/core.py", line 437, in search_groups
yield from provider.search_groups(name, exact=exact)
File "/project/indico/home/.local/lib/python3.9/site-packages/flask_multipass/providers/ldap/providers.py", line 232, in search_groups
for group_dn, group_data in self._search_groups(search_filter):
File "/project/indico/home/.local/lib/python3.9/site-packages/flask_multipass/providers/ldap/providers.py", line 182, in _search_groups
return search(self.ldap_settings['group_base'], search_filter, attributes=[self.ldap_settings['gid']])
KeyError: 'group_base'

{'data': {'get': {'name': 'Organisators'},
'headers': {'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'fr-FR,fr;q=0.9',
'Cookie': 'XXX',
'Host': 'events.molgen.mpg.de',
'Referer': 'https://events.molgen.mpg.de/event/1/manage/protection',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X '
'10_15_7) AppleWebKit/605.1.15 (KHTML, '
'like Gecko) Version/15.5 Safari/605.1.15',
'X-Csrf-Token': '93165c3d-f87f-4e44-8215-66dfab63006e',
'X-Requested-With': 'XMLHttpRequest'},
'json': None,
'post': {},
'url': {}},
'endpoint': 'groups.group_search',
'id': 'cddddabd26354a15',
'ip': 'XXX'
'method': 'GET',
'referrer': 'https://events.molgen.mpg.de/event/1/manage/protection',
'rh': 'RHGroupSearch',
'time': '2022-06-30T18:10:35.819807',
'url': 'https://events.molgen.mpg.de/groups/api/search?name=Organisators',
'user': {'email': '[x@molgen.mpg.de](mailto:x@molgen.mpg.de)',
'id': 2,
'name': 'XXX'},
'user_agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) '
'AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 '
'Safari/605.1.15'}
```

We do not maintain a group field in LDAP, and configured it like below:

```
LOCAL_IDENTITIES = False

_ldap_config = {
'uri': 'ldaps://ldap.molgen.mpg.de',
'bind_dn': 'cn=indico,dc=ldap,dc=apps,dc=molgen,dc=mpg,dc=DE',
'bind_password': 'X',
'timeout': 30,
'verify_cert': True,
'page_size': 1500,

'uid': 'uid',
'user_base': 'dc=user,dc=apps,dc=molgen,dc=mpg,dc=de',
'user_filter': '(objectClass=molgenUser)',
}

AUTH_PROVIDERS = {
'ldap': {
'type': 'ldap',
'title': 'LDAP',
'ldap': _ldap_config,
'default': True
}
}

IDENTITY_PROVIDERS = {
'ldap': {
'type': 'ldap',
'title': 'LDAP',
'ldap': _ldap_config,
'mapping': {
'first_name': 'givenName',
'last_name': 'sn',
'email': 'mail',
},
'trusted_email': True,
'synced_fields': {'first_name', 'last_name'}
}
}
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with indico/modules/groups/controllers.py and flask_multipass/providers/ldap/providers.py, especially the groups.group_search path and _search_groups. Review the supplied LDAP configuration alongside the failing traceback. Done means the reported group search no longer raises KeyError when group_base is not configured, with behavior covered by the relevant tests if available.

Written by the indexing model from the issue text.

Assessment

Tech stack
flask, python
Domain
authentication
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.