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

Commit 9788d8c

Browse files
committed
Make client secret expiration configurable.
1 parent e58d139 commit 9788d8c

File tree

3 files changed

+25
-23
lines changed

3 files changed

+25
-23
lines changed

setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ def run_tests(self):
6666
'quality': ['pylama', 'isort', 'eradicate', 'mypy', 'black', 'bandit'],
6767
},
6868
install_requires=[
69-
"oidcmsg>=0.6.6",
70-
"cryptojwt>=0.7.13",
69+
"oidcmsg>=0.6.7",
7170
"jinja2",
7271
"pyyaml",
7372
"requests",

src/oidcendpoint/oidc/registration.py

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,6 @@ def verify_url(url, urlset):
8484
return False
8585

8686

87-
def client_secret_expiration_time(delta=86400):
88-
"""
89-
Returns client_secret expiration time.
90-
91-
Split for easy customization.
92-
"""
93-
return utc_time_sans_frac() + delta
94-
95-
9687
def secret(seed, sid):
9788
msg = "{}{:.6f}{}".format(time.time(), random(), sid).encode("utf-8")
9889
csum = hmac.new(seed, msg, hashlib.sha224)
@@ -128,7 +119,7 @@ class Registration(Endpoint):
128119
name = "registration"
129120

130121
# default
131-
# response_placement = 'body'dcfr
122+
# response_placement = 'body'
132123

133124
def match_client_request(self, request):
134125
_context = self.endpoint_context
@@ -143,7 +134,7 @@ def match_client_request(self, request):
143134
raise CapabilitiesMisMatch(_pref)
144135
else:
145136
if not set(request[_pref]).issubset(
146-
set(_context.provider_info[_prov])
137+
set(_context.provider_info[_prov])
147138
):
148139
raise CapabilitiesMisMatch(_pref)
149140

@@ -165,8 +156,8 @@ def do_client_registration(self, request, client_id, ignore=None):
165156
err = ClientRegistrationErrorResponse(
166157
error="invalid_configuration_parameter",
167158
error_description="post_logout_redirect_uris "
168-
"contains "
169-
"fragment",
159+
"contains "
160+
"fragment",
170161
)
171162
return err
172163
base, query = splitquery(uri)
@@ -338,16 +329,22 @@ def add_registration_api(self, cinfo, client_id, context):
338329

339330
context.registration_access_token[_rat] = client_id
340331

332+
def client_secret_expiration_time(self):
333+
"""
334+
Returns client_secret expiration time.
335+
"""
336+
if not self.kwargs.get("client_secret_expires", True):
337+
return 0
338+
339+
_expiration_time = self.kwargs.get("client_secret_expires_in", 2592000)
340+
return utc_time_sans_frac() + _expiration_time
341+
341342
def add_client_secret(self, cinfo, client_id, context):
342-
delta_int = int(self.kwargs.get("client_secret_expiration_time", 0))
343-
args = {"delta": delta_int} if delta_int else {}
344343
client_secret = secret(context.seed, client_id)
345-
cinfo.update(
346-
{
347-
"client_secret": client_secret,
348-
"client_secret_expires_at": client_secret_expiration_time(**args),
349-
}
350-
)
344+
cinfo["client_secret"] = client_secret
345+
_eat = self.client_secret_expiration_time()
346+
if _eat:
347+
cinfo["client_secret_expires_at"] = _eat
351348

352349
return client_secret
353350

tests/test_23_oidc_registration_endpoint.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,12 @@ def test_incorrect_request(self):
218218
with pytest.raises(ValueError):
219219
self.endpoint.parse_request(RegistrationRequest(**_msg).to_json())
220220

221+
def test_no_client_expiration_time(self):
222+
self.endpoint.kwargs["client_secret_expires"] = False
223+
_req = self.endpoint.parse_request(CLI_REQ.to_json())
224+
_resp = self.endpoint.process_request(request=_req)
225+
assert _resp
226+
221227

222228
def test_match_sp_sep():
223229
assert match_sp_sep("foo bar", "bar foo")

0 commit comments

Comments
 (0)