Skip to content

Commit f095dc3

Browse files
committed
Enforce aud restrictions
Signed-off-by: Kostis Triantafyllakis <[email protected]>
1 parent 6623da6 commit f095dc3

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/idpyoidc/server/oauth2/introspection.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,13 @@ def process_request(self, request=None, release: Optional[list] = None, **kwargs
110110
grant = _session_info["grant"]
111111
_token = grant.get_token(request_token)
112112

113+
aud = _token.resources
114+
if not aud:
115+
aud = grant.resources
116+
117+
if request["client_id"] not in aud:
118+
return {"response_args": _resp}
119+
113120
_info = self._introspect(_token, _session_info["client_id"], _session_info["grant"])
114121
if _info is None:
115122
return {"response_args": _resp}

tests/test_server_31_oauth2_introspection.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,23 @@ def test_revoked_access_token(self):
494494
_resp = self.introspection_endpoint.process_request(_req)
495495
assert _resp["response_args"]["active"] is False
496496

497+
def test_wrong_aud(self):
498+
auth_req = AUTH_REQ.copy()
499+
auth_req["client_id"] = "client_2"
500+
access_token = self._get_access_token(auth_req)
501+
502+
_context = self.introspection_endpoint.server_get("endpoint_context")
503+
504+
_req = self.introspection_endpoint.parse_request(
505+
{
506+
"token": access_token.value,
507+
"client_id": "client_1",
508+
"client_secret": _context.cdb["client_1"]["client_secret"],
509+
}
510+
)
511+
_resp = self.introspection_endpoint.process_request(_req)
512+
assert _resp["response_args"]["active"] is False
513+
497514
def test_introspect_id_token(self):
498515
session_id = self._create_session(AUTH_REQ)
499516
grant = self.token_endpoint.server_get("endpoint_context").authz(session_id, AUTH_REQ)

0 commit comments

Comments
 (0)