Authentication Challenges
Some ARCHBOM tickets marked as DONE
have an unfinished
label because they weren’t actually completed, but just closed.
So you want to touch JWTs? may be useful for anyone working on any of these challenges.
Also see details about the potential funded contribution FC-18 here, labelled as In FC-18 below.
Easier to use
These changes should make authentication easier to use for engineers.
In Progress https://openedx.atlassian.net/browse/ARCHBOM-1218
A fresh ticket is probably in order here. I’m not clear on the final proposed solution, and where we need monitoring along the way, but this definitely adds complexity to our authentication, and I think there is a simpler way.
https://openedx.atlassian.net/browse/ARCHBOM-1181 (“unfinished”)
Not sure if this has any additional useful context, or is redundant and should be forgotten.
In FC-18 https://openedx.atlassian.net/browse/ARCHBOM-107
AUTHENTICATION_CLASSES
is a default setting for DRF endpoints.This would enable the use of JwtAuthentication from most edx-platform DRF endpoints.
DRF endpoints that override the default should be reviewed to see if the override can be deleted, once there is a sane default.
Order is an open question: JwtAuthentication before or after SessionAuthentication?
Unfortunately, due to differences noted in DEPR(#165), order matters.
Also, order matters until ARCHBOM-1218 is implemented.
For rollout, propose to add a custom version of BasicAuthentication in edx-platform that adds some monitoring to see how and if it is used in Production.
It would be good to drop BasicAuthentication from the defaults if we don’t actually want it.
In FC-18 Clean up and document JWT_AUTH settings · Issue #332 · openedx/edx-drf-extensions
In FC-18 https://openedx.atlassian.net/browse/ARCHBOM-1183 (“unfinished”)
[DEPR]: User email activation check in user.is_active · Issue #165 · openedx/public-engineering
This may be complicated without further product input, but maybe the solution can be readied regardless.
Clean up JWT_VERIFY_AUDIENCE and AUDIENCE setting · Issue #328 · openedx/edx-drf-extensions
https://openedx.atlassian.net/browse/ARCHBOM-1074 (“unfinished”)
Adding an endpoint to LMS to expose the public signing keys. (Unticketed)
This would simplify key rotation. It came up at 2U for non-Open edX platform applications that may use the JWT cookie for SSO.
Simpler authentication
These changes should simplify authentication, which may affect engineers in certain cases, but possibly not as directly as the “Easier to use” category.
In FC-18 Enable asymmetric JWTs everywhere · Issue #333 · openedx/edx-drf-extensions
New implementation ticket for [DEPR]: Symmetric JWTs · Issue #83 · openedx/public-engineering
This would simplify authentication and maintenance, but wouldn’t necessarily add functionality.
In FC-18 Simplify JWT_ISSUER validation · Issue #327 · openedx/edx-drf-extensions
[DEPR]: Complete removal of EdxRestApiClient · Issue #189 · openedx/public-engineering
[DEPR]: BearerAuthentication · Issue #284 · openedx/edx-drf-extensions
To be considered.
https://github.com/openedx/edx-platform/issues/32343
Requires working in Prospectus, edx.org’s private marketing site, so this is not a good candidate for community work.
https://openedx.atlassian.net/browse/ARCHBOM-1077 (“unfinished”)
Related? https://openedx.atlassian.net/browse/ARCHBOM-1168 (“unfinished”)
Authorization
The following tickets may be authorization related, and not really authentication related.
https://openedx.atlassian.net/browse/ARCHBOM-1170 (“unfinished”)
This is unblocked, because we no longer return expired JWTs for restricted applications.
https://openedx.atlassian.net/browse/ARCHBOM-1162 (“unfinished”)
Note: The code has since been updated to use, but override, the shared JwtAuthentication class to update global staff role during login.
Observability
Changes that might help with observability while monitoring other fixes. These should be kept in mind as we consider other dangerous changes that we with to monitor.
https://openedx.atlassian.net/browse/ARCHBOM-545 (“unfinished”)
I have since realized that
MonitoringCustomMetricsMiddleware
isn’t deployed by enough services, so might be better to just keep callingset_custom_attribute
and hopefully the final call wins.
https://openedx.atlassian.net/browse/ARCHBOM-142 (“unfinished”)
https://openedx.atlassian.net/browse/ARCHBOM-158 (“unfinished”)
(Unticketed) It would be nice to have a
failed_jwt_unauthenticated_user_id
to know who may have been trying to authenticate.
Bugs?
https://openedx.atlassian.net/browse/ARCHBOM-1262 (“unfinished”)
https://openedx.atlassian.net/browse/ARCHBOM-543 (“unfinished”)
It is possible this may pass now that we are using a different library under the covers?
Resources
Above tickets were curated from the following: