Examples of broken flows:
- OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
- Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
cookie-issue-with-safari-12/
- Clicking a link on an email:
https://bugs.webkit.org/show_bug.cgi?id=188165#c40
- SAML flow: https://github.com/IronCountySchoolDistrict/django-
python3-saml/issues/1
Since Safari 12 is the current stable version and it's widely deployed on
iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
`SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`.
Core developers, could you please let me know if you agree with that
change, so I can make a PR updating the defaults and the documentation?
I think both CSRF and Session cookies shouldn't have the SameSite flag
because I've found many 403 Forbidden issues on both on Safari 12. If more
steps to reproduce beyond the links above are necessary, please let me
know.
--
Ticket URL: <https://code.djangoproject.com/ticket/30250>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Old description:
> There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
> issue] that prevents common flows (sequences of requests) to work
> properly if there's `SameSite=lax` on cookies. This issue was
> [https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
> Bates, from Apple] and it's still open.
>
> Examples of broken flows:
> - OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
> asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
> - Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
> cookie-issue-with-safari-12/
> - Clicking a link on an email:
> https://bugs.webkit.org/show_bug.cgi?id=188165#c40
> - SAML flow: https://github.com/IronCountySchoolDistrict/django-
> python3-saml/issues/1
>
> Since Safari 12 is the current stable version and it's widely deployed on
> iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
> `SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`.
>
> Core developers, could you please let me know if you agree with that
> change, so I can make a PR updating the defaults and the documentation?
>
> I think both CSRF and Session cookies shouldn't have the SameSite flag
> because I've found many 403 Forbidden issues on both on Safari 12. If
> more steps to reproduce beyond the links above are necessary, please let
> me know.
New description:
There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
issue] that prevents common flows (sequences of requests) to work properly
if there's `SameSite=lax` on cookies. This issue was
[https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
Bates, from Apple] and it's still open.
Examples of broken flows:
- OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
- Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
cookie-issue-with-safari-12/
- Clicking a link on an email:
https://bugs.webkit.org/show_bug.cgi?id=188165#c40
- SAML flow: https://github.com/IronCountySchoolDistrict/django-
python3-saml/issues/1
Since Safari 12 is the current stable version and it's widely deployed on
iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
`SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the more
general solution and it's
[https://github.com/aspnet/Announcements/issues/318 the one recommended by
Microsoft to fix the similar issue on ASP.NET].
Core developers, could you please let me know if you agree with that
change, so I can make a PR updating the defaults and the documentation?
I think both CSRF and Session cookies shouldn't have the SameSite flag
because I've found many 403 Forbidden issues on both on Safari 12. If more
steps to reproduce beyond the links above are necessary, please let me
know.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:1>
Old description:
> There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
> issue] that prevents common flows (sequences of requests) to work
> properly if there's `SameSite=lax` on cookies. This issue was
> [https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
> Bates, from Apple] and it's still open.
>
> Examples of broken flows:
> - OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
> asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
> - Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
> cookie-issue-with-safari-12/
> - Clicking a link on an email:
> https://bugs.webkit.org/show_bug.cgi?id=188165#c40
> - SAML flow: https://github.com/IronCountySchoolDistrict/django-
> python3-saml/issues/1
>
> Since Safari 12 is the current stable version and it's widely deployed on
> iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
> `SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the more
> general solution and it's
> [https://github.com/aspnet/Announcements/issues/318 the one recommended
> by Microsoft to fix the similar issue on ASP.NET].
>
> Core developers, could you please let me know if you agree with that
> change, so I can make a PR updating the defaults and the documentation?
>
> I think both CSRF and Session cookies shouldn't have the SameSite flag
> because I've found many 403 Forbidden issues on both on Safari 12. If
> more steps to reproduce beyond the links above are necessary, please let
> me know.
New description:
There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
issue] that prevents common flows (sequences of requests) to work properly
if there's `SameSite=lax` on cookies. This issue was
[https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
Bates, from Apple] and it's still open.
Examples of broken flows:
- OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
- Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
cookie-issue-with-safari-12/
- Clicking a link on an email:
https://bugs.webkit.org/show_bug.cgi?id=188165#c40
- SAML flow: https://github.com/IronCountySchoolDistrict/django-
python3-saml/issues/1
Since Safari 12 is the current stable version and it's widely deployed on
iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
`SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
general solution and it's
[https://github.com/aspnet/Announcements/issues/318 the one recommended by
Microsoft to fix the similar issue on ASP.NET].
Core developers, could you please let me know if you agree with that
change, so I can make a PR updating the defaults and the documentation?
I think both CSRF and Session cookies shouldn't have the SameSite flag
because I've found many 403 Forbidden issues on both on Safari 12. If more
steps to reproduce beyond the links above are necessary, please let me
know.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:2>
Old description:
> There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
> issue] that prevents common flows (sequences of requests) to work
> properly if there's `SameSite=lax` on cookies. This issue was
> [https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
> Bates, from Apple] and it's still open.
>
> Examples of broken flows:
> - OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
> asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
> - Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
> cookie-issue-with-safari-12/
> - Clicking a link on an email:
> https://bugs.webkit.org/show_bug.cgi?id=188165#c40
> - SAML flow: https://github.com/IronCountySchoolDistrict/django-
> python3-saml/issues/1
>
> Since Safari 12 is the current stable version and it's widely deployed on
> iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
> `SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
> general solution and it's
> [https://github.com/aspnet/Announcements/issues/318 the one recommended
> by Microsoft to fix the similar issue on ASP.NET].
>
> Core developers, could you please let me know if you agree with that
> change, so I can make a PR updating the defaults and the documentation?
>
> I think both CSRF and Session cookies shouldn't have the SameSite flag
> because I've found many 403 Forbidden issues on both on Safari 12. If
> more steps to reproduce beyond the links above are necessary, please let
> me know.
New description:
There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
issue] that prevents common flows (sequences of requests) to work properly
if there's `SameSite=lax` on cookies. This issue was
[https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
Bates, from Apple] and it's still open.
Examples of broken flows:
- OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
- Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
cookie-issue-with-safari-12/
- Clicking a link on an email:
https://bugs.webkit.org/show_bug.cgi?id=188165#c40
- SAML flow: https://github.com/IronCountySchoolDistrict/django-
python3-saml/issues/1
Since Safari 12 is the current stable version and it's widely deployed on
iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
`SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
general solution and it's
[https://github.com/aspnet/Announcements/issues/318 the one recommended by
Microsoft to fix the similar issue on ASP.NET] (they didn't change the
default, though).
Core developers, could you please let me know if you agree with that
change, so I can make a PR updating the defaults and the documentation?
I think both CSRF and Session cookies shouldn't have the SameSite flag
because I've found many 403 Forbidden issues on both on Safari 12. If more
steps to reproduce beyond the links above are necessary, please let me
know.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:3>
Old description:
> There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
> issue] that prevents common flows (sequences of requests) to work
> properly if there's `SameSite=lax` on cookies. This issue was
> [https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
> Bates, from Apple] and it's still open.
>
> Examples of broken flows:
> - OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
> asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
> - Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
> cookie-issue-with-safari-12/
> - Clicking a link on an email:
> https://bugs.webkit.org/show_bug.cgi?id=188165#c40
> - SAML flow: https://github.com/IronCountySchoolDistrict/django-
> python3-saml/issues/1
>
> Since Safari 12 is the current stable version and it's widely deployed on
> iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
> `SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
> general solution and it's
> [https://github.com/aspnet/Announcements/issues/318 the one recommended
> by Microsoft to fix the similar issue on ASP.NET] (they didn't change the
> default, though).
>
> Core developers, could you please let me know if you agree with that
> change, so I can make a PR updating the defaults and the documentation?
>
> I think both CSRF and Session cookies shouldn't have the SameSite flag
> because I've found many 403 Forbidden issues on both on Safari 12. If
> more steps to reproduce beyond the links above are necessary, please let
> me know.
New description:
There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
issue] that prevents common flows (sequences of requests) to work properly
if there's `SameSite=lax` on cookies. This issue was
[https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
Bates, from Apple] and it's still open.
Examples of broken flows:
- OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
- Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
cookie-issue-with-safari-12/
- Validating an email: https://bugs.webkit.org/show_bug.cgi?id=188165#c40
- SAML flow: https://github.com/IronCountySchoolDistrict/django-
python3-saml/issues/1
Since Safari 12 is the current stable version and it's widely deployed on
iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
`SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
general solution and it's
[https://github.com/aspnet/Announcements/issues/318 the one recommended by
Microsoft to fix the similar issue on ASP.NET] (they didn't change the
default, though).
Core developers, could you please let me know if you agree with that
change, so I can make a PR updating the defaults and the documentation?
I think both CSRF and Session cookies shouldn't have the SameSite flag
because I've found many 403 Forbidden issues on both on Safari 12. If more
steps to reproduce beyond the links above are necessary, please let me
know.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:4>
* component: Uncategorized => Core (Other)
* easy: 1 => 0
* stage: Unreviewed => Someday/Maybe
Comment:
Please raise the issue on the DevelopersMailingList as it gets more
attention than this ticket tracker.
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:5>
Old description:
> There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
> issue] that prevents common flows (sequences of requests) to work
> properly if there's `SameSite=lax` on cookies. This issue was
> [https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
> Bates, from Apple] and it's still open.
>
> Examples of broken flows:
> - OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
> asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
> - Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
> cookie-issue-with-safari-12/
> - Validating an email: https://bugs.webkit.org/show_bug.cgi?id=188165#c40
> - SAML flow: https://github.com/IronCountySchoolDistrict/django-
> python3-saml/issues/1
>
> Since Safari 12 is the current stable version and it's widely deployed on
> iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
> `SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
> general solution and it's
> [https://github.com/aspnet/Announcements/issues/318 the one recommended
> by Microsoft to fix the similar issue on ASP.NET] (they didn't change the
> default, though).
>
> Core developers, could you please let me know if you agree with that
> change, so I can make a PR updating the defaults and the documentation?
>
> I think both CSRF and Session cookies shouldn't have the SameSite flag
> because I've found many 403 Forbidden issues on both on Safari 12. If
> more steps to reproduce beyond the links above are necessary, please let
> me know.
New description:
There's a [https://bugs.webkit.org/show_bug.cgi?id=188165 iOS Safari 12
issue] that prevents common flows (sequences of requests) to work properly
if there's `SameSite=lax` on cookies. This issue was
[https://bugs.webkit.org/show_bug.cgi?id=188165#c27 confirmed by Daniel
Bates, from Apple] and it's still open.
Examples of broken flows:
- OpenIdConnect: https://community.auth0.com/t/authentication-broken-on-
asp-net-core-and-safari-on-ios-12-mojave-take-2/19104
- Shopify app OAuth flow: https://www.calazan.com/django-21-samesite-
cookie-issue-with-safari-12/
- Validating an email: https://bugs.webkit.org/show_bug.cgi?id=188165#c40
- SAML flow: https://github.com/IronCountySchoolDistrict/django-
python3-saml/issues/1
Since Safari 12 is the current stable version and it's widely deployed on
iOS devices, I believe the Django default for `CSRF_COOKIE_SAMESITE` and
`SESSION_COOKIE_SAMESITE` should be `None`, not `Lax`. That's the most
general solution and it's
[https://github.com/aspnet/Announcements/issues/318 the one recommended by
Microsoft to fix the similar issue on ASP.NET] (they didn't change the
default, though).
Core developers, could you please let me know if you agree with that
change, so I can make a PR updating the defaults and the documentation?
I think both CSRF and Session cookies shouldn't have the SameSite flag
because I've found many 403 Forbidden issues on both on Safari 12. If more
steps to reproduce beyond the links above are necessary, please let me
know.
---
Update:
In fact, a much simpler flow is broken on Safari 12 with the default "Lax"
settings.
If the user comes from a cross-site redirection (like a tracker link from
an email provider), Safari doesn't send samesite=lax cookies on the
request. This causes multiple issues:
1. User will not be logged in if `SESSION_COOKIE_SAMESITE = 'Lax'`. That
behavior is only expected if `'Strict'`.
2. User will not be able to make AJAX POST requests if
`CSRF_COOKIE_SAMESITE = 'Lax'`, because JS code won't be able to read the
CSRF cookie.
3. POSTs on other open tabs/windows will fail if `CSRF_COOKIE_SAMESITE =
'Lax'`, because Safari triggered a CSRF cookie update after the first
request without cookies.
Those issues do not happen on Chrome.
Full example here: https://github.com/vintasoftware/safari-samesite-
cookie-issue
--
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:6>
Comment (by Flávio Juvenal):
Thanks Tim, thread created on django-developers:
https://groups.google.com/d/msg/django-developers/b_7XQYFaVeU/7M5KtGM2CAAJ
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:7>
* cc: Maciej Olko (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:8>
* status: new => closed
* resolution: => duplicate
Comment:
Duplicate of #29975.
--
Ticket URL: <https://code.djangoproject.com/ticket/30250#comment:9>