1313from oidcmsg .oidc import AccessTokenResponse
1414from oidcmsg .oidc import AuthorizationRequest
1515from oidcmsg .oidc import AuthorizationResponse
16+ from oidcmsg .oidc import Claims
1617from oidcmsg .oidc import OpenIDSchema
1718from oidcmsg .oidc import verified_claim_name
1819from oidcmsg .oidc .session import BackChannelLogoutRequest
@@ -329,6 +330,7 @@ def client_setup(self, iss_id='', user=''):
329330 if not user :
330331 raise ValueError ('Need issuer or user' )
331332
333+ logger .debug ("Connecting to previously unknown OP" )
332334 temporary_client = self .init_client ('' )
333335 temporary_client .do_request ('webfinger' , resource = user )
334336 else :
@@ -340,10 +342,12 @@ def client_setup(self, iss_id='', user=''):
340342 if temporary_client :
341343 client = temporary_client
342344 else :
345+ logger .debug ("Creating new client: %s" , iss_id )
343346 client = self .init_client (iss_id )
344347 else :
345348 return client
346349
350+ logger .debug ("Get provider info" )
347351 issuer = self .do_provider_info (client )
348352 _sc = client .service_context
349353 try :
@@ -356,8 +360,16 @@ def client_setup(self, iss_id='', user=''):
356360
357361 if registration_type == 'automatic' :
358362 _sc .client_id = client .client_id = _fe .entity_id
359- _sc .redirect_uris = _sc .behaviour ['redirect_uris' ]
363+ _redirect_uris = _sc .behaviour .get ("redirect_uris" )
364+ if _redirect_uris :
365+ _sc .redirect_uris = _redirect_uris
366+ else :
367+ _callbacks = self .create_callbacks (_sc .provider_info ['issuer' ])
368+ _sc .redirect_uris = [
369+ v for k , v in _callbacks .items () if not k .startswith ('__' )]
370+ _sc .callbacks = _callbacks
360371 else : # explicit
372+ logger .debug ("Do client registration" )
361373 self .do_client_registration (client , iss_id )
362374
363375 self .issuer2rp [issuer ] = client
@@ -411,6 +423,12 @@ def init_authorization(self, client=None, state='', req_args=None):
411423 'nonce' : _nonce
412424 }
413425
426+ _req_args = service_context .config .get ("request_args" )
427+ if _req_args :
428+ if 'claims' in _req_args :
429+ _req_args ["claims" ] = Claims (** _req_args ["claims" ])
430+ request_args .update (_req_args )
431+
414432 if req_args is not None :
415433 request_args .update (req_args )
416434
0 commit comments