Skip to content

Commit 060c4f2

Browse files
authored
Merge pull request #57 from ctriant/fix_registration
Fix registration after fedservice refactor
2 parents 6ce2cc0 + 4adc0a4 commit 060c4f2

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/idpyoidc/server/oidc/registration.py

100755100644
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from idpyoidc.message.oidc import RegistrationRequest
1717
from idpyoidc.message.oidc import RegistrationResponse
1818
from idpyoidc.server.endpoint import Endpoint
19+
from idpyoidc.server.exception import CapabilitiesMisMatch
1920
from idpyoidc.server.exception import InvalidRedirectURIError
2021
from idpyoidc.server.exception import InvalidSectorIdentifier
2122
from idpyoidc.time_util import utc_time_sans_frac
@@ -155,7 +156,11 @@ def match_claim(self, claim, val):
155156
else:
156157
return None
157158
else:
158-
return list(set(_val).intersection(set(val)))
159+
_ret = list(set(_val).intersection(set(val)))
160+
if len(_ret) > 0:
161+
return _ret
162+
else:
163+
raise CapabilitiesMisMatch(_my_key)
159164
else:
160165
if val == _val:
161166
return val
@@ -407,7 +412,13 @@ def client_registration_setup(self, request, new_id=True, set_secret=True):
407412
request.rm_blanks()
408413
_context = self.upstream_get("context")
409414

410-
request = self.filter_client_request(request)
415+
try:
416+
request = self.filter_client_request(request)
417+
except CapabilitiesMisMatch as err:
418+
return ResponseMessage(
419+
error="invalid_request",
420+
error_description="Don't support proposed %s" % err,
421+
)
411422

412423
if new_id:
413424
if self.kwargs.get("client_id_generator"):

tests/test_server_23_oidc_registration_endpoint.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,15 @@ def test_register_initiate_login_uri_wrong_scheme(self):
338338
assert "error" in _resp
339339
assert _resp["error"] == "invalid_configuration_request"
340340

341+
def test_register_unsupported_response_type(self):
342+
self.endpoint.upstream_get("context").provider_info["response_types_supported"] = ["token", "id_token"]
343+
_msg = MSG.copy()
344+
_msg["response_types"] = ["id_token token"]
345+
_req = self.endpoint.parse_request(RegistrationRequest(**_msg).to_json())
346+
_resp = self.endpoint.process_request(request=_req)
347+
assert _resp["error"] == "invalid_request"
348+
assert "response_type" in _resp["error_description"]
349+
341350

342351
def test_match_sp_sep():
343352
assert match_sp_sep("foo bar", "bar foo")

0 commit comments

Comments
 (0)