Skip to content

Commit 993e0c7

Browse files
tonialn2ygk
authored andcommitted
logout refactor : remove post_logout_redirect_uri from validate_logout_request outputs
1 parent 0965100 commit 993e0c7

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

oauth2_provider/views/oidc.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,11 @@ def _validate_claims(request, claims):
212212
def validate_logout_request(request, id_token_hint, client_id, post_logout_redirect_uri):
213213
"""
214214
Validate an OIDC RP-Initiated Logout Request.
215-
`(prompt_logout, (post_logout_redirect_uri, application), token_user)` is returned.
215+
`(prompt_logout, application, token_user)` is returned.
216216
217217
`prompt_logout` indicates whether the logout has to be confirmed by the user. This happens if the
218218
specifications force a confirmation, or it is enabled by `OIDC_RP_INITIATED_LOGOUT_ALWAYS_PROMPT`.
219-
`post_logout_redirect_uri` is the validated URI where the User should be redirected to after the
220-
logout. Can be None. None will redirect to "/" of this app. If it is set `application` will also
219+
If it is set `application` will also
221220
be set to the Application that is requesting the logout. `token_user` is the id_token user, which will
222221
used to revoke the tokens if found.
223222
@@ -274,7 +273,7 @@ def validate_logout_request(request, id_token_hint, client_id, post_logout_redir
274273
if not application.post_logout_redirect_uri_allowed(post_logout_redirect_uri):
275274
raise InvalidOIDCRedirectURIError("This client does not have this redirect uri registered.")
276275

277-
return prompt_logout, (post_logout_redirect_uri, application), token_user
276+
return prompt_logout, application, token_user
278277

279278

280279
class RPInitiatedLogoutView(OIDCLogoutOnlyMixin, FormView):
@@ -315,7 +314,7 @@ def get(self, request, *args, **kwargs):
315314
state = request.GET.get("state")
316315

317316
try:
318-
prompt, (redirect_uri, application), token_user = validate_logout_request(
317+
prompt, application, token_user = validate_logout_request(
319318
request=request,
320319
id_token_hint=id_token_hint,
321320
client_id=client_id,
@@ -325,7 +324,7 @@ def get(self, request, *args, **kwargs):
325324
return self.error_response(error)
326325

327326
if not prompt:
328-
return self.do_logout(application, redirect_uri, state, token_user)
327+
return self.do_logout(application, post_logout_redirect_uri, state, token_user)
329328

330329
self.oidc_data = {
331330
"id_token_hint": id_token_hint,
@@ -347,15 +346,15 @@ def form_valid(self, form):
347346
state = form.cleaned_data.get("state")
348347

349348
try:
350-
prompt, (redirect_uri, application), token_user = validate_logout_request(
349+
prompt, application, token_user = validate_logout_request(
351350
request=self.request,
352351
id_token_hint=id_token_hint,
353352
client_id=client_id,
354353
post_logout_redirect_uri=post_logout_redirect_uri,
355354
)
356355

357356
if not prompt or form.cleaned_data.get("allow"):
358-
return self.do_logout(application, redirect_uri, state, token_user)
357+
return self.do_logout(application, post_logout_redirect_uri, state, token_user)
359358
else:
360359
raise LogoutDenied()
361360

tests/test_oidc_views.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,37 +198,37 @@ def test_validate_logout_request(oidc_tokens, public_application, other_user, rp
198198
id_token_hint=None,
199199
client_id=None,
200200
post_logout_redirect_uri=None,
201-
) == (True, (None, None), None)
201+
) == (True, None, None)
202202
assert validate_logout_request(
203203
request=mock_request_for(oidc_tokens.user),
204204
id_token_hint=None,
205205
client_id=client_id,
206206
post_logout_redirect_uri=None,
207-
) == (True, (None, application), None)
207+
) == (True, application, None)
208208
assert validate_logout_request(
209209
request=mock_request_for(oidc_tokens.user),
210210
id_token_hint=None,
211211
client_id=client_id,
212212
post_logout_redirect_uri="http://example.org",
213-
) == (True, ("http://example.org", application), None)
213+
) == (True, application, None)
214214
assert validate_logout_request(
215215
request=mock_request_for(oidc_tokens.user),
216216
id_token_hint=id_token,
217217
client_id=None,
218218
post_logout_redirect_uri="http://example.org",
219-
) == (ALWAYS_PROMPT, ("http://example.org", application), oidc_tokens.user)
219+
) == (ALWAYS_PROMPT, application, oidc_tokens.user)
220220
assert validate_logout_request(
221221
request=mock_request_for(other_user),
222222
id_token_hint=id_token,
223223
client_id=None,
224224
post_logout_redirect_uri="http://example.org",
225-
) == (True, ("http://example.org", application), oidc_tokens.user)
225+
) == (True, application, oidc_tokens.user)
226226
assert validate_logout_request(
227227
request=mock_request_for(oidc_tokens.user),
228228
id_token_hint=id_token,
229229
client_id=client_id,
230230
post_logout_redirect_uri="http://example.org",
231-
) == (ALWAYS_PROMPT, ("http://example.org", application), oidc_tokens.user)
231+
) == (ALWAYS_PROMPT, application, oidc_tokens.user)
232232
with pytest.raises(ClientIdMissmatch):
233233
validate_logout_request(
234234
request=mock_request_for(oidc_tokens.user),

0 commit comments

Comments
 (0)