From 366ef6799d1a79191231fdddbdd31f49e1195abb Mon Sep 17 00:00:00 2001 From: Roland Hedberg Date: Wed, 13 Jul 2022 09:49:38 +0200 Subject: [PATCH] Default request arguments should be part of the service specific configuration. --- src/idpyoidc/client/entity.py | 7 ++++++- src/idpyoidc/client/oidc/authorization.py | 2 +- src/idpyoidc/client/service.py | 9 +++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/idpyoidc/client/entity.py b/src/idpyoidc/client/entity.py index 745ba350..b6e9f427 100644 --- a/src/idpyoidc/client/entity.py +++ b/src/idpyoidc/client/entity.py @@ -126,7 +126,7 @@ def __init__( jwks_uri = jwks_uri or self.get_metadata_value("jwks_uri") set_jwks_uri_or_jwks(self, self._service_context, config, jwks_uri, _kj) - # Deal with backward compatible + # Deal with backward compatibility self.backward_compatibility(config) self.construct_uris(self._service_context.issuer, @@ -351,6 +351,11 @@ def backward_compatibility(self, config): "usage", "services", "add_ons"]: self.extra[key] = val + auth_request_args = config.conf.get("request_args", {}) + if auth_request_args: + authz_serv = self.get_service('authorization') + authz_serv.default_request_args.update(auth_request_args) + def config_args(self): res = {} for id, service in self._service.items(): diff --git a/src/idpyoidc/client/oidc/authorization.py b/src/idpyoidc/client/oidc/authorization.py index 533e56bc..9cea8b7f 100644 --- a/src/idpyoidc/client/oidc/authorization.py +++ b/src/idpyoidc/client/oidc/authorization.py @@ -32,7 +32,7 @@ class Authorization(authorization.Authorization): def __init__(self, client_get, conf=None): authorization.Authorization.__init__(self, client_get, conf=conf) - self.default_request_args = {"scope": ["openid"]} + self.default_request_args.update({"scope": ["openid"]}) self.pre_construct = [ self.set_state, pre_construct_pick_redirect_uri, diff --git a/src/idpyoidc/client/service.py b/src/idpyoidc/client/service.py index 66b20dc4..d024793c 100644 --- a/src/idpyoidc/client/service.py +++ b/src/idpyoidc/client/service.py @@ -113,6 +113,11 @@ def __init__( elif def_val is not None: self.usage[param] = def_val + _default_request_args = conf.get("request_args", {}) + if _default_request_args: + self.default_request_args = _default_request_args + del conf["request_args"] + else: self.conf = {} @@ -164,6 +169,10 @@ def gather_request_args(self, **kwargs): if val: ar_args[prop] = val + for key, val in self.default_request_args.items(): + if key not in ar_args: + ar_args[key] = val + return ar_args def method_args(self, context, **kwargs):