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

Commit 253dac0

Browse files
committed
Logout
* fix: logout RP, fixed arguments order * feat: small code refactor, remove try/except
1 parent 366904b commit 253dac0

2 files changed

Lines changed: 11 additions & 14 deletions

File tree

example/flask_rp/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def logout():
233233
def backchannel_logout(op_hash):
234234
_rp = get_rp(op_hash)
235235
try:
236-
_state = rp_handler.backchannel_logout(request.data, _rp)
236+
_state = rp_handler.backchannel_logout(_rp, request.data)
237237
except Exception as err:
238238
logger.error('Exception: {}'.format(err))
239239
return 'System error!', 400

src/oidcrp/rp_handler.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,6 @@ def backchannel_logout(client, request='', request_args=None):
866866
:param request: URL encoded logout request
867867
:return:
868868
"""
869-
870869
if request:
871870
req = BackChannelLogoutRequest().from_urlencoded(as_unicode(request))
872871
else:
@@ -887,17 +886,15 @@ def backchannel_logout(client, request='', request_args=None):
887886
raise MessageException('Bogus logout request: {}'.format(err))
888887

889888
# Find the subject through 'sid' or 'sub'
890-
891-
try:
892-
sub = req[verified_claim_name('logout_token')]['sub']
893-
except KeyError:
894-
try:
895-
sid = req[verified_claim_name('logout_token')]['sid']
896-
except KeyError:
897-
raise MessageException('Neither "sid" nor "sub"')
898-
else:
899-
_state = _context.state.get_state_by_sid(sid)
900-
else:
889+
sub = req[verified_claim_name('logout_token')].get('sub')
890+
sid = None
891+
if not sub:
892+
sid = req[verified_claim_name('logout_token')].get('sid')
893+
894+
if not sub and not sid:
895+
raise MessageException('Neither "sid" nor "sub"')
896+
elif sub:
901897
_state = _context.state.get_state_by_sub(sub)
902-
898+
elif sid:
899+
_state = _context.state.get_state_by_sid(sid)
903900
return _state

0 commit comments

Comments
 (0)