Bug 53579 - There are multiple cookies with name, 'UMCSessionId'
There are multiple cookies with name, 'UMCSessionId'
Status: CLOSED FIXED
Product: UCS@school
Classification: Unclassified
Component: ucs-test
UCS@school 5.0
Other Linux
: P5 normal (vote)
: UCS@school 5.0 v1
Assigned To: Florian Best
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2021-07-14 21:35 CEST by Florian Best
Modified: 2022-03-15 13:03 CET (History)
0 users

See Also:
What kind of report is it?: Development Internal
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Florian Best univentionstaff 2021-07-14 21:35:48 CEST
In UCS@school 4.4 and 5.0 some tests are failing (often when using SAML) with the exceptions below:

Traceback (most recent call last):
  File "101_exam_mode.py", line 102, in __test_exam_mode
    exam.finish()
  File "/usr/lib/python2.7/dist-packages/univention/testing/ucsschool/exam.py", line 210, in finish
    reqResult = self.client.umc_command("schoolexam/exam/finish", param).result
  File "/usr/lib/python2.7/dist-packages/univention/testing/umc.py", line 66, in umc_command
    return super(Client, self).umc_command(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 452, in umc_command
    return self.request('POST', 'command/%s' % (path,), data, headers)
  File "/usr/lib/python2.7/dist-packages/univention/testing/umc.py", line 78, in request
    response = super(Client, self).request(method, path, data, headers)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 532, in request
    return self.send(request)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 553, in send
    request.headers['X-XSRF-Protection'] = self.cookies['UMCSessionId']
  File "/usr/lib/python2.7/dist-packages/requests/cookies.py", line 328, in __getitem__
    return self._find_no_duplicates(name)
  File "/usr/lib/python2.7/dist-packages/requests/cookies.py", line 394, in _find_no_duplicates
    raise CookieConflictError('There are multiple cookies with name, %r' % (name))
CookieConflictError: There are multiple cookies with name, 'UMCSessionId'

Traceback (most recent call last):
  File "101_exam_prepare.py", line 97, in __test_exam_prepare
    exam.save()
  File "/usr/lib/python2.7/dist-packages/univention/testing/ucsschool/exam.py", line 190, in save
    reqResult = self.client.umc_command("schoolexam/exam/{}".format(command), param).result
  File "/usr/lib/python2.7/dist-packages/univention/testing/umc.py", line 66, in umc_command
    return super(Client, self).umc_command(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 452, in umc_command
    return self.request('POST', 'command/%s' % (path,), data, headers)
  File "/usr/lib/python2.7/dist-packages/univention/testing/umc.py", line 78, in request
    response = super(Client, self).request(method, path, data, headers)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 532, in request
    return self.send(request)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 553, in send
    request.headers['X-XSRF-Protection'] = self.cookies['UMCSessionId']
  File "/usr/lib/python2.7/dist-packages/requests/cookies.py", line 328, in __getitem__
    return self._find_no_duplicates(name)
  File "/usr/lib/python2.7/dist-packages/requests/cookies.py", line 394, in _find_no_duplicates
    raise CookieConflictError('There are multiple cookies with name, %r' % (name))
CookieConflictError: There are multiple cookies with name, 'UMCSessionId'

Traceback (most recent call last):
  File "25_room_management_module.py", line 38, in __test_room_management_module
    umc_room = room.get()
  File "/usr/lib/python2.7/dist-packages/univention/testing/ucsschool/schoolroom.py", line 121, in get
    reqResult = self.client.umc_command("schoolrooms/get", [self.dn()]).result
  File "/usr/lib/python2.7/dist-packages/univention/testing/umc.py", line 66, in umc_command
    return super(Client, self).umc_command(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 452, in umc_command
    return self.request('POST', 'command/%s' % (path,), data, headers)
  File "/usr/lib/python2.7/dist-packages/univention/testing/umc.py", line 78, in request
    response = super(Client, self).request(method, path, data, headers)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 532, in request
    return self.send(request)
  File "/usr/lib/python2.7/dist-packages/univention/lib/umc.py", line 553, in send
    request.headers['X-XSRF-Protection'] = self.cookies['UMCSessionId']
  File "/usr/lib/python2.7/dist-packages/requests/cookies.py", line 328, in __getitem__
    return self._find_no_duplicates(name)
  File "/usr/lib/python2.7/dist-packages/requests/cookies.py", line 394, in _find_no_duplicates
    raise CookieConflictError('There are multiple cookies with name, %r' % (name))
CookieConflictError: There are multiple cookies with name, 'UMCSessionId'
Comment 1 Florian Best univentionstaff 2021-07-16 14:50:01 CEST
[
    Cookie(version=0, name='UMCSessionId', value='445e954d-866f-44d1-805a-fd3e1ad9860b', port=None, port_specified=False, domain='', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False),
    Cookie(version=0, name='UMCUsername', value='Administrator', port=None, port_specified=False, domain='', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False),
    Cookie(version=0, name='UMCSessionId', value='445e954d-866f-44d1-805a-fd3e1ad9860b', port=None, port_specified=False, domain='master80.school.dev', domain_specified=False, domain_initial_dot=False, path='/univention/', path_specified=True, secure=False, expires=1784126708, discard=False, comment=None, comment_url=None, rest={}, rfc2109=True),
    Cookie(version=0, name='UMCUsername', value='Administrator', port=None, port_specified=False, domain='master80.school.dev', domain_specified=False, domain_initial_dot=False, path='/univention/', path_specified=True, secure=False, expires=1784126708, discard=False, comment=None, comment_url=None, rest={}, rfc2109=True),
    Cookie(version=0, name='SimpleSAMLAuthToken', value='_92fcc9263ffd1e0404069561b5c90ba20435c7f601', port=None, port_specified=False, domain='ucs-sso.school.dev', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False),
    Cookie(version=0, name='SimpleSAMLSessionID', value='c1c85597b9bb634c3ecf81f854c5a554', port=None, port_specified=False, domain='ucs-sso.school.dev', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)
]

['<Cookie UMCSessionId=445e954d-866f-44d1-805a-fd3e1ad9860b for />', '<Cookie UMCUsername=Administrator for />', '<Cookie UMCSessionId=445e954d-866f-44d1-805a-fd3e1ad9860b for master80.school.dev/univention/>', '<Cookie UMCUsername=Administrator for master80.school.dev/univention/>', '<Cookie SimpleSAMLAuthToken=_92fcc9263ffd1e0404069561b5c90ba20435c7f601 for ucs-sso.school.dev/>', '<Cookie SimpleSAMLSessionID=c1c85597b9bb634c3ecf81f854c5a554 for ucs-sso.school.dev/>']

So we have a cookie UMCSessionId=445e954d-866f-44d1-805a-fd3e1ad9860b for /. Where does it come from? How is that possible?
Comment 2 Florian Best univentionstaff 2021-07-16 15:43:45 CEST
The class univention.testing.umc.ClientSaml overwrites self.cookies.
Adjusted this so that it only sets one cookie per name.

Fixed in UCS 5.0:
ucs-test (10.0.6-16)
9136147fbca9 | Bug #53579: fix CookieConflictError: There are multiple cookies with name, 'UMCSessionId'


We should backport this to UCS 4.4 but I don't have time currently.