@@ -839,7 +839,7 @@ def logout(self, state, client=None, post_logout_redirect_uri=''):
839839 client = self .get_client_from_session_key (state )
840840
841841 try :
842- srv = client .service [ ' end_session']
842+ srv = client .client_get ( ' service' , ' end_session')
843843 except KeyError :
844844 raise OidcServiceError ("Does not know how to logout" )
845845
@@ -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