11import logging
22
3+ from oidcmsg import oauth2
34from oidcmsg import oidc
45from oidcmsg .oidc import make_openid_request
56from oidcmsg .oidc import verified_claim_name
@@ -47,18 +48,20 @@ def set_state(self, request_args, **kwargs):
4748
4849 def update_service_context (self , resp , key = '' , ** kwargs ):
4950 _context = self .client_get ("service_context" )
50- try :
51- _idt = resp [verified_claim_name ('id_token' )]
52- except KeyError :
53- pass
54- else :
51+
52+ _idt = resp .get (verified_claim_name ('id_token' ))
53+ if _idt :
5554 # If there is a verified ID Token then we have to do nonce
5655 # verification
57- try :
58- if _context .state .get_state_by_nonce (_idt ['nonce' ]) != key :
59- raise ParameterError ('Someone has messed with "nonce"' )
60- except KeyError :
61- raise ValueError ('Missing nonce value' )
56+ item = _context .state .get_item (oauth2 .AuthorizationRequest , 'auth_request' , key )
57+ if item ['nonce' ] != _idt ['nonce' ]:
58+ raise ValueError ('Invalid nonce' )
59+
60+ # try:
61+ # if _context.state.get_state_by_nonce(_idt['nonce']) != key:
62+ # raise ParameterError('Someone has messed with "nonce"')
63+ # except KeyError:
64+ # raise ValueError('Invalid nonce')
6265
6366 _context .state .store_sub2state (_idt ['sub' ], key )
6467
@@ -229,6 +232,33 @@ def oidc_post_construct(self, req, **kwargs):
229232
230233 return req
231234
235+ # def post_parse_response(self, response, **kwargs):
236+ # """
237+ # Add scope claim to response, from the request, if not present in the
238+ # response
239+ #
240+ # :param response: The response
241+ # :param kwargs: Extra Keyword arguments
242+ # :return: A possibly augmented response
243+ # """
244+ #
245+ # authorization.Authorization.parse_response(self, response, **kwargs)
246+ #
247+ # if "id_token" not in response:
248+ # try:
249+ # _key = kwargs['state']
250+ # except KeyError:
251+ # pass
252+ # else:
253+ # if _key:
254+ # item = self.client_get("service_context").state.get_item(oauth2.AuthorizationRequest,
255+ # 'auth_request', _key)
256+ # try:
257+ # response["scope"] = item["scope"]
258+ # except KeyError:
259+ # pass
260+ # return response
261+
232262 def gather_verify_arguments (self ):
233263 """
234264 Need to add some information before running verify()
@@ -242,6 +272,10 @@ def gather_verify_arguments(self):
242272 'skew' : _context .clock_skew
243273 }
244274
275+ _nonce = _context .state .get_item (oauth2 .AuthorizationRequest , 'auth_request' , 'nonce' )
276+ if _nonce :
277+ kwargs ["nonce" ] = _nonce
278+
245279 _client_id = _context .client_id
246280 if _client_id :
247281 kwargs ['client_id' ] = _client_id
0 commit comments