diff --git a/src/modules/DashboardOIDC.py b/src/modules/DashboardOIDC.py index 6693b233..4a41a6f1 100644 --- a/src/modules/DashboardOIDC.py +++ b/src/modules/DashboardOIDC.py @@ -82,13 +82,18 @@ class DashboardOIDC: headers = jwt.get_unverified_header(id_token) kid = headers["kid"] - + key = next(k for k in jwks["keys"] if k["kid"] == kid) - + + alg = key.get("alg") or headers.get("alg") + supported_algs = oidc_config.get("id_token_signing_alg_values_supported") + if supported_algs and alg not in supported_algs: + return False, f"Unsupported token signing algorithm: {alg}" + payload = jwt.decode( id_token, key, - algorithms=[key["alg"]], + algorithms=[alg], audience=provider_info.get('client_id'), issuer=issuer, access_token=access_token