Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add cache control for jwks endpoint #429

Merged
merged 10 commits into from
Sep 27, 2023
Merged

Conversation

KShivendu
Copy link
Contributor

@KShivendu KShivendu commented Aug 25, 2023

Summary of change

Add cache control for jwks endpoint

Related issues

Checklist for important updates

  • Changelog has been updated
  • coreDriverInterfaceSupported.json file has been updated (if needed)
    • Along with the associated array in supertokens_python/constants.py
  • frontendDriverInterfaceSupported.json file has been updated (if needed)
  • Changes to the version if needed
    • In setup.py
    • In supertokens_python/constants.py
  • Had installed and ran the pre-commit hook
  • Issue this PR against the latest non released version branch.
    • To know which one it is, run find the latest released tag (git tag) in the format vX.Y.Z, and then find the latest branch (git branch --all) whose X.Y is greater than the latest released tag.
    • If no such branch exists, then create one from the latest released branch.
  • If have added a new web framework, update the supertokens_python/utils.py file to include that in the FRAMEWORKS variable
  • If added a new recipe that has a User type with extra info, then be sure to change the User type in supertokens_python/types.py
  • Make sure that syncio / asyncio functions are consistent.
  • If access token structure has changed
    • Modified test in tests/sessions/test_access_token_version.py to account for any new claims that are optional or omitted by the core

Comment on lines 262 to 272
res: Dict[str, Any] = {"_headers": dict(response.headers)}

if response.headers.get("content-type").startswith("text"):
res["_text"] = response.text

try:
return response.json()
res.update(response.json())
except JSONDecodeError:
return response.text
pass

return res
Copy link
Contributor Author

@KShivendu KShivendu Aug 25, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried with creating a QuerierResponse class as well but that will require too many changes throughout the codebase. Plus, we aren't actually using response.text anywhere. So made it (response.text) part of the dict response.

@KShivendu KShivendu changed the base branch from 0.15 to feat/rate-limting August 25, 2023 09:19
@KShivendu KShivendu mentioned this pull request Aug 25, 2023
10 tasks
Base automatically changed from feat/rate-limting to 0.15 August 28, 2023 08:39
Comment on lines 290 to 296
if response.headers.get("content-type", "").startswith("text"):
res["_text"] = response.text

try:
return response.json()
res.update(response.json())
except JSONDecodeError:
return response.text
pass
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is changing the semantics of how things were done. Please fix

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@@ -40,8 +40,9 @@ class CreateJwtResultUnsupportedAlgorithm:


class GetJWKSResult:
def __init__(self, keys: List[JsonWebKey]):
def __init__(self, keys: List[JsonWebKey], validity_in_secs: Optional[int]):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
def __init__(self, keys: List[JsonWebKey], validity_in_secs: Optional[int]):
def __init__(self, keys: List[JsonWebKey], validity_in_secs: Optional[int] = None):

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

supertokens_python/recipe/jwt/interfaces.py Show resolved Hide resolved
@KShivendu
Copy link
Contributor Author

KShivendu commented Sep 26, 2023

Merged 0.16

@KShivendu KShivendu changed the base branch from 0.15 to 0.16 September 26, 2023 11:46
@rishabhpoddar rishabhpoddar merged commit a74482d into 0.16 Sep 27, 2023
@rishabhpoddar rishabhpoddar deleted the feat/cache-control-jwks branch September 27, 2023 05:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants