feat: add JWT signed authentication for OAuth application API #318
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a custom authentication class (
JWTsignedOauthAppAuthentication) that allows authentication using a signed JWT token for theOauthApplicationAPIView.Your explanation is clear but a bit wordy and could be structured more logically for better readability. Here's a more concise and natural version:
Motivation for this addition
When a new subscription is registered from Control Center, we need to call this
eox-coreendpoint to create the tenant OAuth client for the instance. However, at this stage, Control Center does not yet have the OAuth client credentials needed to generate a JWT token for authentication.This authentication mechanism allows the request to be securely made using a signed JWT token, eliminating the need for pre-existing credentials.
Once the tenant OAuth client is created, its credentials are stored in Control Center, enabling future authenticated API requests to the Open edX instance.
Key Changes
JWTsignedOauthAppAuthentication, which:Authorizationheader.How to Test
Generate RSA Key Pair (Private & Public Keys)
settings.EOX_CORE_JWT_SIGNED_OAUTH_APP_PUBLIC_KEY).Generate a Signed JWT
Make a Request to the API
Authorizationheader: