Skip to content

Commit aaa8446

Browse files
committed
Worked on claims
1 parent 0138c0e commit aaa8446

File tree

7 files changed

+42
-18
lines changed

7 files changed

+42
-18
lines changed

src/idpyoidc/client/claims/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ def get_client_authn_methods():
1313

1414

1515
class Claims(claims.Claims):
16+
_supports = {}
17+
1618
def get_base_url(self, configuration: dict, entity_id: Optional[str] = ""):
1719
_base = configuration.get("base_url")
1820
if not _base:

src/idpyoidc/client/claims/oauth2.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,34 @@
33
from idpyoidc.client import claims
44
from idpyoidc.client.claims.transform import create_registration_request
55

6+
REGISTER2PREFERRED = {
7+
"scope": "scopes_supported",
8+
"token_endpoint_auth_signing_alg": "token_endpoint_auth_signing_alg_values_supported",
9+
"response_types": "response_types_supported",
10+
# "response_modes": "response_modes_supported",
11+
"grant_types": "grant_types_supported",
12+
"token_endpoint_auth_method": "token_endpoint_auth_methods_supported",
13+
"token_auth_signing_algs": "token_auth_signing_algs_supported",
14+
# 'ui_locales': 'ui_locales_supported',
15+
}
16+
617

718
class Claims(claims.Claims):
19+
register2preferred = REGISTER2PREFERRED
20+
821
_supports = {
922
"redirect_uris": None,
10-
"grant_types_supported": ["authorization_code", "implicit", "refresh_token"],
23+
# "scopes_supported": [],
1124
"response_types_supported": ["code"],
12-
"client_id": None,
13-
"client_secret": None,
25+
# "response_modes_supported": ["query", "fragment"],
26+
"grant_types_supported": ["authorization_code", "implicit", "refresh_token"],
27+
"token_endpoint_auth_methods_supported": ["none", "client_secret_post", "client_secret_basic"],
28+
# "token_auth_signing_algs_supported": metadata.get_signing_algs(),
1429
"client_name": None,
1530
"client_uri": None,
1631
"logo_uri": None,
32+
"scope": None,
1733
"contacts": None,
18-
"scopes_supported": [],
1934
"tos_uri": None,
2035
"policy_uri": None,
2136
"jwks_uri": None,

src/idpyoidc/client/claims/oidc.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class Claims(client_claims.Claims):
7070
"client_name": None,
7171
"client_secret": None,
7272
"client_uri": None,
73+
"code_challenge_methods_supported": None,
7374
"contacts": None,
7475
"default_max_age": 86400,
7576
"encrypt_id_token_supported": None,

src/idpyoidc/client/claims/transform.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@
5151

5252

5353
def supported_to_preferred(
54-
supported: dict,
55-
preference: dict,
56-
base_url: str,
57-
info: Optional[dict] = None,
54+
supported: dict,
55+
preference: dict,
56+
base_url: str,
57+
info: Optional[dict] = None,
5858
):
5959
if info: # The provider info
6060
for key, val in supported.items():
@@ -83,7 +83,7 @@ def supported_to_preferred(
8383
preference[key] = [x for x in val if x in _info_val]
8484
else:
8585
pass
86-
else:
86+
elif val:
8787
preference[key] = val
8888

8989
# special case -> must have a request_uris value
@@ -148,7 +148,7 @@ def _intersection(a, b):
148148

149149

150150
def preferred_to_registered(
151-
prefers: dict, supported: dict, registration_response: Optional[dict] = None
151+
prefers: dict, supported: dict, registration_response: Optional[dict] = None
152152
):
153153
"""
154154
The claims with values that are returned from the OP is what goes unless (!!)
@@ -219,4 +219,10 @@ def create_registration_request(prefers: dict, supported: dict) -> dict:
219219
continue
220220

221221
_request[key] = array_or_singleton(spec, value)
222+
223+
for key, val in prefers.items():
224+
if key not in RegistrationRequest.c_param.keys():
225+
if key not in REGISTER2PREFERRED.values():
226+
_request[key] = val
227+
222228
return _request

src/idpyoidc/client/oauth2/authorization.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ class Authorization(Service):
3131

3232
_supports = {
3333
"response_types_supported": ["code"],
34-
"response_modes_supported": ["query", "fragment"],
35-
"grant_types": []
34+
"grant_types": None
3635
}
3736

3837
_callback_path = {

src/idpyoidc/server/claims/oauth2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class Claims(claims.Claims):
3939
def __init__(self, prefer: Optional[dict] = None, callback_path: Optional[dict] = None):
4040
claims.Claims.__init__(self, prefer=prefer, callback_path=callback_path)
4141

42-
def provider_info(self, supports, schema: Optional[Message] = None):
42+
def metadata(self, supports, schema: Optional[Message] = None):
4343
_info = {}
4444
if schema is None:
4545
schema = ASConfigurationResponse

src/idpyoidc/server/endpoint_context.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,9 @@ def __init__(
247247
metadata_schema = conf.conf.get("metadata_schema", None)
248248
if metadata_schema:
249249
metadata_schema = importer(metadata_schema)
250-
self.provider_info = self.get_provider_info(_supports, schema=metadata_schema)
250+
self.provider_info = self.get_metadata(_supports, schema=metadata_schema)
251251
self.provider_info["issuer"] = self.issuer
252+
self.metadata = self.provider_info
252253

253254
# INTERFACES
254255

@@ -274,12 +275,12 @@ def __init__(
274275
# if _id_token_handler:
275276
# self.provider_info.update(_id_token_handler.provider_info)
276277

277-
def get_provider_info(self, supports: Optional[dict] = None, schema: Optional[Message] = None):
278+
def get_metadata(self, supports: Optional[dict] = None, schema: Optional[Message] = None):
278279
if supports is None:
279280
supports = self.supports()
280-
_provider_info = self.claims.provider_info(supports, schema)
281-
_provider_info.update(self._get_endpoint_info())
282-
return _provider_info
281+
_metadata = self.claims.metadata(supports, schema)
282+
_metadata.update(self._get_endpoint_info())
283+
return _metadata
283284

284285
def setup_authz(self):
285286
authz_spec = self.conf.get("authz")

0 commit comments

Comments
 (0)