Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit 7d89874

Browse files
committed
Fixed pick_redirect_uri
1 parent f8d0414 commit 7d89874

3 files changed

Lines changed: 19 additions & 14 deletions

File tree

src/oidcrp/oauth2/utils.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,33 @@ def get_state_parameter(request_args, kwargs):
2323
return _state
2424

2525

26-
def pick_redirect_uri(context, request_args=None):
26+
def pick_redirect_uri(context,
27+
request_args: Optional[Union[Message, dict]] = None,
28+
response_type: Optional[str] = ''):
29+
if request_args is None:
30+
request_args = {}
31+
2732
if 'redirect_uri' in request_args:
2833
return request_args["redirect_uri"]
2934

3035
if context.callback:
31-
_conf_resp_types = context.behaviour.get('response_types', [])
32-
_response_type = request_args.get('response_type')
33-
if not _response_type and _conf_resp_types:
34-
_response_type = _conf_resp_types[0]
35-
36-
request_args['response_type'] = _response_type
36+
if not response_type:
37+
_conf_resp_types = context.behaviour.get('response_types', [])
38+
response_type = request_args.get('response_type')
39+
if not response_type and _conf_resp_types:
40+
response_type = _conf_resp_types[0]
3741

3842
_response_mode = request_args.get('response_mode')
3943

4044
if _response_mode == 'form_post':
4145
redirect_uri = context.callback['form_post']
42-
elif _response_type == 'code':
46+
elif response_type == 'code':
4347
redirect_uri = context.callback['code']
4448
else:
4549
redirect_uri = context.callback['implicit']
4650

4751
logger.debug(
48-
f"pick_redirect_uris: response_type={_response_type}, response_mode={_response_mode}, "
52+
f"pick_redirect_uris: response_type={response_type}, response_mode={_response_mode}, "
4953
f"redirect_uri={redirect_uri}")
5054
else:
5155
redirect_uri = context.redirect_uris[0]
@@ -56,7 +60,8 @@ def pick_redirect_uri(context, request_args=None):
5660
def pre_construct_pick_redirect_uri(request_args: Optional[Union[Message, dict]] = None,
5761
service: Optional[Service] = None, **kwargs):
5862
_context = service.client_get("service_context")
59-
request_args["redirect_uri"] = pick_redirect_uri(_context, request_args)
63+
request_args["redirect_uri"] = pick_redirect_uri(_context,
64+
request_args=request_args)
6065
return request_args, {}
6166

6267

src/oidcrp/rp_handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ def do_client_registration(self, client=None,
275275

276276
_context.set('redirect_uris', [
277277
v for k, v in callbacks.items() if not k.startswith('__')])
278-
_context.set('callbacks', callbacks)
278+
_context.set('callback', callbacks)
279279

280280
if behaviour_args:
281281
_params = RegistrationRequest().parameters()
@@ -295,7 +295,7 @@ def add_callbacks(self, service_context):
295295

296296
service_context.set('redirect_uris', [
297297
v for k, v in _callbacks.items() if not k.startswith('__')])
298-
service_context.set('callbacks', _callbacks)
298+
service_context.set('callback', _callbacks)
299299
return _callbacks
300300

301301
def do_webfinger(self, user):
@@ -409,7 +409,7 @@ def init_authorization(self, client=None, state='', req_args=None, behaviour_arg
409409
_nonce = rndstr(24)
410410
_response_type = self._get_response_type(_context, req_args)
411411
request_args = {
412-
'redirect_uri': pick_redirect_uri(_context, _response_type),
412+
'redirect_uri': pick_redirect_uri(_context, response_type=_response_type),
413413
'scope': _context.get('behaviour')['scope'],
414414
'response_type': _response_type,
415415
'nonce': _nonce

tests/pub_client.jwks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"keys": [{"kty": "RSA", "use": "sig", "kid": "SUswNi1MRFlDT0Y2YjU1Z1RfQlo2S3dEa3FTTkV3LThFcnhDTHF5elk2VQ", "n": "0UkUx2ewKyc-XJ1o0ToyGjws_JybAMZj2oYjsPyyvQ_T5dhZ2VmRRRkhsaVJ2xE_GGc7mSG0IjmGFyXp5y0w4mJBcsAEE5-8eBTvQdYIryjW74r3jt6Fi4Hlm1yFMTie3apv8mw79BUj-jT0kh3_m-FiKKUvLsq45DcLtTJ4cx7Ize37dl1sFSpQcoYMk7eiUEM8fiNboiVwvBYNAWVMkUM-LnVUPm3UjvKp0LihYEkZFWOxmuQmj2x25SFUkjus38ERrRqJQBZduxdBHFrWtWg8yOA53BkMU0FFg_r0H3ctl-5GaKw-BWlogU4qXnsq85xy0EoenRk7FPV8g_ulJw", "e": "AQAB"}, {"kty": "EC", "use": "sig", "kid": "NC1pdGRQN002bWM3bk1xX2R0SktscElqbFdtN29ITDV2WVd2b0hOYzREVQ", "crv": "P-256", "x": "kK7Qp1woSerI7rUOAwW_4sU6ZmwV3wwXKX3VU-v2fMI", "y": "iPWd_Pjq6EjxYy08KNFZ3PxhEwgWHgAQTTknlKMKJA0"}]}
1+
{"keys": [{"kty": "RSA", "use": "sig", "kid": "SUswNi1MRFlDT0Y2YjU1Z1RfQlo2S3dEa3FTTkV3LThFcnhDTHF5elk2VQ", "e": "AQAB", "n": "0UkUx2ewKyc-XJ1o0ToyGjws_JybAMZj2oYjsPyyvQ_T5dhZ2VmRRRkhsaVJ2xE_GGc7mSG0IjmGFyXp5y0w4mJBcsAEE5-8eBTvQdYIryjW74r3jt6Fi4Hlm1yFMTie3apv8mw79BUj-jT0kh3_m-FiKKUvLsq45DcLtTJ4cx7Ize37dl1sFSpQcoYMk7eiUEM8fiNboiVwvBYNAWVMkUM-LnVUPm3UjvKp0LihYEkZFWOxmuQmj2x25SFUkjus38ERrRqJQBZduxdBHFrWtWg8yOA53BkMU0FFg_r0H3ctl-5GaKw-BWlogU4qXnsq85xy0EoenRk7FPV8g_ulJw"}, {"kty": "EC", "use": "sig", "kid": "NC1pdGRQN002bWM3bk1xX2R0SktscElqbFdtN29ITDV2WVd2b0hOYzREVQ", "crv": "P-256", "x": "kK7Qp1woSerI7rUOAwW_4sU6ZmwV3wwXKX3VU-v2fMI", "y": "iPWd_Pjq6EjxYy08KNFZ3PxhEwgWHgAQTTknlKMKJA0"}]}

0 commit comments

Comments
 (0)