@@ -874,49 +874,49 @@ def logout(self, state, client=None, post_logout_redirect_uri=''):
874874
875875 return resp
876876
877- @ staticmethod
878- def backchannel_logout ( client , request = '' , request_args = None ):
879- """
877+ def clear_session ( self , state ):
878+ client = self . get_client_from_session_key ( state )
879+ client . session_interface . remove_state ( state )
880880
881- :param request: URL encoded logout request
882- :return:
883- """
884881
885- if request :
886- req = BackChannelLogoutRequest ().from_urlencoded (as_unicode (request ))
887- else :
888- req = BackChannelLogoutRequest (** request_args )
882+ def backchannel_logout (client , request = '' , request_args = None ):
883+ """
889884
890- kwargs = {
891- 'aud' : client .service_context .client_id ,
892- 'iss' : client .service_context .issuer ,
893- 'keyjar' : client .service_context .keyjar
894- }
885+ :param request: URL encoded logout request
886+ :return:
887+ """
895888
896- try :
897- req . verify ( ** kwargs )
898- except ( MessageException , ValueError , NotForMe ) as err :
899- raise MessageException ( 'Bogus logout request: {}' . format ( err ) )
889+ if request :
890+ req = BackChannelLogoutRequest (). from_urlencoded ( as_unicode ( request ) )
891+ else :
892+ req = BackChannelLogoutRequest ( ** request_args )
900893
901- # Find the subject through 'sid' or 'sub'
894+ kwargs = {
895+ 'aud' : client .service_context .client_id ,
896+ 'iss' : client .service_context .issuer ,
897+ 'keyjar' : client .service_context .keyjar
898+ }
902899
900+ try :
901+ req .verify (** kwargs )
902+ except (MessageException , ValueError , NotForMe ) as err :
903+ raise MessageException ('Bogus logout request: {}' .format (err ))
904+
905+ # Find the subject through 'sid' or 'sub'
906+
907+ try :
908+ sub = req [verified_claim_name ('logout_token' )]['sub' ]
909+ except KeyError :
903910 try :
904- sub = req [verified_claim_name ('logout_token' )]['sub ' ]
911+ sid = req [verified_claim_name ('logout_token' )]['sid ' ]
905912 except KeyError :
906- try :
907- sid = req [verified_claim_name ('logout_token' )]['sid' ]
908- except KeyError :
909- raise MessageException ('Neither "sid" nor "sub"' )
910- else :
911- _state = client .session_interface .get_state_by_sid (sid )
913+ raise MessageException ('Neither "sid" nor "sub"' )
912914 else :
913- _state = client .session_interface .get_state_by_sub ( sub )
914-
915- return _state
915+ _state = client .session_interface .get_state_by_sid ( sid )
916+ else :
917+ _state = client . session_interface . get_state_by_sub ( sub )
916918
917- def clear_session (self , state ):
918- client = self .get_client_from_session_key (state )
919- client .session_interface .remove_state (state )
919+ return _state
920920
921921
922922def get_provider_specific_service (service_provider , service , ** kwargs ):
0 commit comments