code: def response_endpoint(self, context, *args):
          
          backend_state = context.state[self.name]
          authn_resp = self.client.parse_response(AuthorizationResponse, info=context.request, sformat="dict")
          if backend_state[STATE_KEY] != authn_resp["state"]:
              satosa_logging(logger, logging.DEBUG,
                             "Missing or invalid state in authn response for state: %s" %
                             backend_state,
                             context.state)
              raise SATOSAAuthenticationError(context.state, "Missing or invalid state in authn response")
  
          self._check_error_response(authn_resp, context)
          access_token, id_token_claims = self._get_tokens(authn_resp, context)
          if id_token_claims:
              self._verify_nonce(id_token_claims["nonce"], context)
          else:
              id_token_claims = {}
  
          userinfo = {}
          if access_token:
              # make userinfo request
              userinfo = self._get_userinfo(authn_resp["state"], context)
  
          if not id_token_claims and not userinfo:
              satosa_logging(logger, logging.ERROR, "No id_token or userinfo, nothing to do..", context.state)
              raise SATOSAAuthenticationError(context.state, "No user info available.")
  
          all_user_claims = dict(list(userinfo.items()) + list(id_token_claims.items()))
          satosa_logging(logger, logging.DEBUG, "UserInfo: %s" % all_user_claims, context.state)
          del context.state[self.name]
          internal_resp = self._translate_response(all_user_claims, self.client.authorization_endpoint)
          return self.auth_callback_func(context, internal_resp)
docs: Handles the authentication response from the OP.
          :type context: satosa.context.Context
          :type args: Any
          :rtype: satosa.response.Response
  
          :param context: SATOSA context
          :param args: None
          :return: