88from idpyoidc .client .oauth2 .utils import pre_construct_pick_redirect_uri
99from idpyoidc .client .oidc import IDT2REG
1010from idpyoidc .client .oidc .utils import construct_request_uri
11- from idpyoidc .client .oidc . utils import request_object_encryption
11+ from idpyoidc .client .request_object import construct_request_parameter
1212from idpyoidc .client .service_context import ServiceContext
1313from idpyoidc .client .util import implicit_response_types
1414from idpyoidc .exception import MissingRequiredAttribute
1515from idpyoidc .message import Message
1616from idpyoidc .message import oauth2
1717from idpyoidc .message import oidc
18- from idpyoidc .message .oidc import make_openid_request
1918from idpyoidc .message .oidc import verified_claim_name
2019from idpyoidc .time_util import time_sans_frac
21- from idpyoidc .time_util import utc_time_sans_frac
2220from idpyoidc .util import rndstr
2321
2422__author__ = "Roland Hedberg"
@@ -212,63 +210,6 @@ def store_request_on_file(self, req, **kwargs):
212210 fid .close ()
213211 return _webname
214212
215- def construct_request_parameter (
216- self , req , request_param , audience = None , expires_in = 0 , ** kwargs
217- ):
218- """Construct a request parameter"""
219- alg = self .get_request_object_signing_alg (** kwargs )
220- kwargs ["request_object_signing_alg" ] = alg
221-
222- _context = self .upstream_get ("context" )
223- if "keys" not in kwargs and alg and alg != "none" :
224- kwargs ["keys" ] = self .upstream_get ("attribute" , "keyjar" )
225-
226- if alg == "none" :
227- kwargs ["keys" ] = []
228-
229- # This is the issuer of the JWT, that is me !
230- _issuer = kwargs .get ("issuer" )
231- if _issuer is None :
232- kwargs ["issuer" ] = _context .get_client_id ()
233-
234- if kwargs .get ("recv" ) is None :
235- try :
236- kwargs ["recv" ] = _context .provider_info ["issuer" ]
237- except KeyError :
238- kwargs ["recv" ] = _context .issuer
239-
240- try :
241- del kwargs ["service" ]
242- except KeyError :
243- pass
244-
245- if expires_in :
246- req ["exp" ] = utc_time_sans_frac () + int (expires_in )
247-
248- _mor_args = {
249- k : kwargs [k ]
250- for k in [
251- "keys" ,
252- "issuer" ,
253- "request_object_signing_alg" ,
254- "recv" ,
255- "with_jti" ,
256- "lifetime" ,
257- ]
258- if k in kwargs
259- }
260-
261- _req_jwt = make_openid_request (req , ** _mor_args )
262-
263- if "target" not in kwargs :
264- kwargs ["target" ] = _context .provider_info .get ("issuer" , _context .issuer )
265-
266- # Should the request be encrypted
267- _req_jwte = request_object_encryption (
268- _req_jwt , _context , self .upstream_get ("attribute" , "keyjar" ), ** kwargs
269- )
270- return _req_jwte
271-
272213 def oidc_post_construct (self , req , ** kwargs ):
273214 """
274215 Modify the request arguments.
@@ -303,10 +244,21 @@ def oidc_post_construct(self, req, **kwargs):
303244 if _request_param == "request_uri" :
304245 kwargs ["base_path" ] = _context .get ("base_url" ) + "/" + "requests"
305246 kwargs ["local_dir" ] = _context .get_usage ("requests_dir" , "./requests" )
306- _req = self .construct_request_parameter (req , _request_param , ** kwargs )
247+ service = kwargs .get ("service" )
248+ if service :
249+ del kwargs ["service" ]
250+ else :
251+ service = self
252+
253+ _req = construct_request_parameter (service , req , _request_param , ** kwargs )
307254 req ["request_uri" ] = self .store_request_on_file (_req , ** kwargs )
308255 elif _request_param == "request" :
309- _req = self .construct_request_parameter (req , _request_param , ** kwargs )
256+ service = kwargs .get ("service" )
257+ if service :
258+ del kwargs ["service" ]
259+ else :
260+ service = self
261+ _req = construct_request_parameter (service , req , _request_param , ** kwargs )
310262 req ["request" ] = _req
311263
312264 if _req :
@@ -319,7 +271,8 @@ def oidc_post_construct(self, req, **kwargs):
319271 return req
320272
321273 def gather_verify_arguments (
322- self , response : Optional [Union [dict , Message ]] = None , behaviour_args : Optional [dict ] = None
274+ self , response : Optional [Union [dict , Message ]] = None ,
275+ behaviour_args : Optional [dict ] = None
323276 ):
324277 """
325278 Need to add some information before running verify()
@@ -379,12 +332,12 @@ def _do_type(self, context, typ, response_types):
379332 return ""
380333
381334 def construct_uris (
382- self ,
383- base_url : str ,
384- hex : bytes ,
385- context : ServiceContext ,
386- targets : Optional [List [str ]] = None ,
387- response_types : Optional [List [str ]] = None ,
335+ self ,
336+ base_url : str ,
337+ hex : bytes ,
338+ context : ServiceContext ,
339+ targets : Optional [List [str ]] = None ,
340+ response_types : Optional [List [str ]] = None ,
388341 ):
389342 _callback_uris = context .get_preference ("callback_uris" , {})
390343
0 commit comments