diff options
author | Quentin Gliech <quenting@element.io> | 2024-07-08 14:08:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-08 14:08:11 +0200 |
commit | c896030f679ad4987df015970a0c55aa4ffe8466 (patch) | |
tree | 5c2321fa8e2eb0a2c591b66b5c62492cdf963c6c /synapse/api | |
parent | Bump certifi from 2023.7.22 to 2024.7.4 (#17404) (diff) | |
download | synapse-c896030f679ad4987df015970a0c55aa4ffe8466.tar.xz |
MSC3861: allow overriding the introspection endpoint (#17406)
This makes it easier to go through an internal endpoint instead of the public facing URL when introspecting tokens, reducing latency.
Diffstat (limited to 'synapse/api')
-rw-r--r-- | synapse/api/auth/msc3861_delegated.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/synapse/api/auth/msc3861_delegated.py b/synapse/api/auth/msc3861_delegated.py index f61b39ded7..7361666c77 100644 --- a/synapse/api/auth/msc3861_delegated.py +++ b/synapse/api/auth/msc3861_delegated.py @@ -145,6 +145,18 @@ class MSC3861DelegatedAuth(BaseAuth): # metadata.validate_introspection_endpoint() return metadata + async def _introspection_endpoint(self) -> str: + """ + Returns the introspection endpoint of the issuer + + It uses the config option if set, otherwise it will use OIDC discovery to get it + """ + if self._config.introspection_endpoint is not None: + return self._config.introspection_endpoint + + metadata = await self._load_metadata() + return metadata.get("introspection_endpoint") + async def _introspect_token(self, token: str) -> IntrospectionToken: """ Send a token to the introspection endpoint and returns the introspection response @@ -161,8 +173,7 @@ class MSC3861DelegatedAuth(BaseAuth): Returns: The introspection response """ - metadata = await self._issuer_metadata.get() - introspection_endpoint = metadata.get("introspection_endpoint") + introspection_endpoint = await self._introspection_endpoint() raw_headers: Dict[str, str] = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": str(self._http_client.user_agent, "utf-8"), |