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

Commit be43d45

Browse files
committed
Added token endpoint to oidc-op/oauth2.
Added OAuth2ClaimsInterface Added ASConfiguration Changed name of tests to make clear if they where oauth2 or oidc based. Made all OAuth2/OIDC based tests use ASConfiguration/OPConfiguration.
1 parent 0f49fae commit be43d45

72 files changed

Lines changed: 1873 additions & 2070 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/oidcop/authz/__init__.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ def usage_rules(self, client_id: Optional[str] = ""):
3030
return _usage_rules
3131

3232
try:
33-
_per_client = self.server_get("endpoint_context").cdb[client_id][
34-
"token_usage_rules"
35-
]
33+
_per_client = self.server_get("endpoint_context").cdb[client_id]["token_usage_rules"]
3634
except KeyError:
3735
pass
3836
else:
@@ -59,14 +57,11 @@ def usage_rules_for(self, client_id, token_type):
5957
return {}
6058

6159
def __call__(
62-
self,
63-
session_id: str,
64-
request: Union[dict, Message],
65-
resources: Optional[list] = None,
60+
self, session_id: str, request: Union[dict, Message], resources: Optional[list] = None,
6661
) -> Grant:
67-
session_info = self.server_get(
68-
"endpoint_context"
69-
).session_manager.get_session_info(session_id=session_id, grant=True)
62+
session_info = self.server_get("endpoint_context").session_manager.get_session_info(
63+
session_id=session_id, grant=True
64+
)
7065
grant = session_info["grant"]
7166

7267
args = self.grant_config.copy()
@@ -87,24 +82,19 @@ def __call__(
8782
# After this is where user consent should be handled
8883
scopes = request.get("scope", [])
8984
grant.scope = scopes
90-
grant.claims = self.server_get(
91-
"endpoint_context"
92-
).claims_interface.get_claims_all_usage(session_id=session_id, scopes=scopes)
85+
grant.claims = self.server_get("endpoint_context").claims_interface.get_claims_all_usage(
86+
session_id=session_id, scopes=scopes
87+
)
9388

9489
return grant
9590

9691

9792
class Implicit(AuthzHandling):
9893
def __call__(
99-
self,
100-
session_id: str,
101-
request: Union[dict, Message],
102-
resources: Optional[list] = None,
94+
self, session_id: str, request: Union[dict, Message], resources: Optional[list] = None,
10395
) -> Grant:
10496
args = self.grant_config.copy()
105-
grant = self.server_get("endpoint_context").session_manager.get_grant(
106-
session_id=session_id
107-
)
97+
grant = self.server_get("endpoint_context").session_manager.get_grant(session_id=session_id)
10898
for arg, val in args:
10999
setattr(grant, arg, val)
110100
return grant

src/oidcop/client_authn.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,7 @@ def is_usable(self, request=None, authorization_token=None):
131131

132132
def verify(self, request, **kwargs):
133133
if (
134-
self.server_get("endpoint_context").cdb[request["client_id"]][
135-
"client_secret"
136-
]
134+
self.server_get("endpoint_context").cdb[request["client_id"]]["client_secret"]
137135
== request["client_secret"]
138136
):
139137
return {"client_id": request["client_id"]}
@@ -148,9 +146,7 @@ class BearerHeader(ClientSecretBasic):
148146
tag = "bearer_header"
149147

150148
def is_usable(self, request=None, authorization_token=None):
151-
if authorization_token is not None and authorization_token.startswith(
152-
"Bearer "
153-
):
149+
if authorization_token is not None and authorization_token.startswith("Bearer "):
154150
return True
155151
return False
156152

@@ -203,9 +199,7 @@ def verify(self, request, key_type, **kwargs):
203199
if _sign_alg and _sign_alg.startswith("HS"):
204200
if key_type == "private_key":
205201
raise AttributeError("Wrong key type")
206-
keys = _context.keyjar.get(
207-
"sig", "oct", ca_jwt["iss"], ca_jwt.jws_header.get("kid")
208-
)
202+
keys = _context.keyjar.get("sig", "oct", ca_jwt["iss"], ca_jwt.jws_header.get("kid"))
209203
_secret = _context.cdb[ca_jwt["iss"]].get("client_secret")
210204
if _secret and keys[0].key != as_bytes(_secret):
211205
raise AttributeError("Oct key used for signing not client_secret")
@@ -366,14 +360,10 @@ def verify_client(
366360
if _method.is_usable(request, authorization_token):
367361
try:
368362
auth_info = _method.verify(
369-
request=request,
370-
authorization_token=authorization_token,
371-
endpoint=endpoint,
363+
request=request, authorization_token=authorization_token, endpoint=endpoint,
372364
)
373365
except Exception as err:
374-
logger.warning(
375-
"Verifying auth using {} failed: {}".format(_method.tag, err)
376-
)
366+
logger.warning("Verifying auth using {} failed: {}".format(_method.tag, err))
377367
else:
378368
if "method" not in auth_info:
379369
auth_info["method"] = _method.tag
@@ -403,19 +393,15 @@ def verify_client(
403393
raise UnknownClient("Unknown Client ID")
404394

405395
if not valid_client_info(_cinfo):
406-
logger.warning(
407-
"Client registration has timed out or " "client secret is expired."
408-
)
396+
logger.warning("Client registration has timed out or " "client secret is expired.")
409397
raise InvalidClient("Not valid client")
410398

411399
# store what authn method was used
412400
if auth_info.get("method"):
413401
_request_type = request.__class__.__name__
414402
_used_authn_method = endpoint_context.cdb[client_id].get("auth_method")
415403
if _used_authn_method:
416-
endpoint_context.cdb[client_id]["auth_method"][
417-
_request_type
418-
] = auth_info["method"]
404+
endpoint_context.cdb[client_id]["auth_method"][_request_type] = auth_info["method"]
419405
else:
420406
endpoint_context.cdb[client_id]["auth_method"] = {
421407
_request_type: auth_info["method"]
@@ -427,9 +413,7 @@ def verify_client(
427413

428414
try:
429415
# get_client_id_from_token is a callback... Do not abuse for code readability.
430-
auth_info["client_id"] = get_client_id_from_token(
431-
endpoint_context, _token, request
432-
)
416+
auth_info["client_id"] = get_client_id_from_token(endpoint_context, _token, request)
433417
except KeyError:
434418
raise ValueError("Unknown token")
435419

0 commit comments

Comments
 (0)