Merge ~maxiberta/canonical-identity-provider:cookies-explicit-samesite-2 into canonical-identity-provider:master

Proposed by Maximiliano Bertacchini
Status: Merged
Approved by: Maximiliano Bertacchini
Approved revision: 51e9bd1814b0fe9e38122883a56233cdfa9d1f42
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~maxiberta/canonical-identity-provider:cookies-explicit-samesite-2
Merge into: canonical-identity-provider:master
Diff against target: 23 lines (+2/-1)
2 files modified
django_project/settings_base.py (+1/-0)
src/identityprovider/views/server.py (+1/-1)
Reviewer Review Type Date Requested Status
Daniel Manrique (community) Approve
Review via email: mp+414316@code.launchpad.net

Commit message

Set explicit "SameSite=None; Secure" to the openid_referer cookie

Should fix issues with openid authentication on modern browsers, which default to "SameSite=Lax".

Description of the change

See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite

Session and CSRF cookies are already "SameSite=None; Secure" as per https://code.launchpad.net/~maxiberta/canonical-identity-provider/+git/canonical-identity-provider/+merge/388247.

This patch is already applied on https://login.staging.ubuntu.com. Login at https://staging-api.snapcraft.io/snaps still working (but I didn't manage to reproduce the infinite openid loop originally, tbh).

To post a comment you must log in.
Revision history for this message
Daniel Manrique (roadmr) wrote :

+1 let's merge and test thoroughly on staging.

review: Approve
Revision history for this message
Maximiliano Bertacchini (maxiberta) :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/django_project/settings_base.py b/django_project/settings_base.py
2index ba0f454..4c5db9a 100644
3--- a/django_project/settings_base.py
4+++ b/django_project/settings_base.py
5@@ -507,6 +507,7 @@ SESSION_COOKIE_HTTPONLY = True
6 SESSION_COOKIE_NAME = 'sessionid'
7 SESSION_COOKIE_PATH = '/'
8 SESSION_COOKIE_SAMESITE = "None"
9+SESSION_COOKIE_SAMESITE_KEYS = {'openid_referer'}
10 SESSION_COOKIE_SECURE = True
11 SESSION_ENGINE = 'django.contrib.sessions.backends.db'
12 SESSION_EXPIRE_AT_BROWSER_CLOSE = False
13diff --git a/src/identityprovider/views/server.py b/src/identityprovider/views/server.py
14index 7998a85..d41b48a 100644
15--- a/src/identityprovider/views/server.py
16+++ b/src/identityprovider/views/server.py
17@@ -234,7 +234,7 @@ def _handle_user_response(request, orequest):
18 reverse('server-decide', kwargs=dict(token=token)))
19 referer = request.META.get('HTTP_REFERER')
20 if referer:
21- response.set_cookie('openid_referer', referer)
22+ response.set_cookie('openid_referer', referer, secure=True)
23 return response
24
25

Subscribers

People subscribed via source and target branches