summaryrefslogtreecommitdiff
path: root/src/services/api/rest/libs/token_auth.py
diff options
context:
space:
mode:
authoromnom62 <omnom62@outlook.com>2026-08-26 17:10:31 +1000
committerJohn Estabrook <jestabro@vyos.io>2026-09-01 19:35:35 -0500
commitea4a1e2dc6093570e4876b9f2a29c6cecc17d6f4 (patch)
treeb6e9fe37473a0723d69348f8580ce02a19e8f047 /src/services/api/rest/libs/token_auth.py
parent841516c478f6c965d7dd39025728e8dc8984bbcd (diff)
downloadvyos-1x-ea4a1e2dc6093570e4876b9f2a29c6cecc17d6f4.tar.gz
vyos-1x-ea4a1e2dc6093570e4876b9f2a29c6cecc17d6f4.zip
http-api: T8989: address Copilot review comments
- Remove fallback 'oidc-client' identity - tokens without sub/client_id are now rejected - Suppress OIDC validation error details from stdout - Cache discovered JWKS URI back to session to avoid per-request discovery - token_op now accepts X-API-Key header alongside form field - Reset REST/OIDC session attributes on SIGHUP reload to prevent stale config persisting after nodes are removed
Diffstat (limited to 'src/services/api/rest/libs/token_auth.py')
-rw-r--r--src/services/api/rest/libs/token_auth.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/services/api/rest/libs/token_auth.py b/src/services/api/rest/libs/token_auth.py
index ea0b14a9c..e0710cc20 100644
--- a/src/services/api/rest/libs/token_auth.py
+++ b/src/services/api/rest/libs/token_auth.py
@@ -46,6 +46,7 @@ def verify_oidc_token(token: str):
disc_url = f"{state.oidc_issuer}/.well-known/openid-configuration"
with _req.urlopen(disc_url, timeout=10) as r:
jwks_uri = _json.loads(r.read())["jwks_uri"]
+ state.oidc_jwks_uri = jwks_uri
jwks_client = PyJWKClient(jwks_uri, cache_keys=True)
signing_key = jwks_client.get_signing_key_from_jwt(token)
decode_options = {"require": ["exp"]}
@@ -60,9 +61,8 @@ def verify_oidc_token(token: str):
else:
decode_options["verify_aud"] = False
payload = jwt.decode(token, signing_key.key, **decode_kwargs)
- return payload.get("sub") or payload.get("client_id") or "oidc-client"
- except Exception as e:
- print(f"OIDC token validation failed: {e}", flush=True)
+ return payload.get("sub") or payload.get("client_id")
+ except Exception:
return None