code: def _handle_authn_request(self, context):
          
          request = urlencode(context.request)
          satosa_logging(logger, logging.DEBUG, "Authn req from client: {}".format(request),
                         context.state)
  
          try:
              authn_req = self.provider.parse_authentication_request(request)
          except InvalidAuthenticationRequest as e:
              satosa_logging(logger, logging.ERROR, "Error in authn req: {}".format(str(e)),
                             context.state)
              error_url = e.to_error_url()
  
              if error_url:
                  return SeeOther(error_url)
              else:
                  return BadRequest("Something went wrong: {}".format(str(e)))
  
          client_id = authn_req["client_id"]
          context.state[self.name] = {"oidc_request": request}
          subject_type = self.provider.clients[client_id].get("subject_type", "pairwise")
          client_name = self.provider.clients[client_id].get("client_name")
          if client_name:
              # TODO should process client names for all languages, see OIDC Registration, Section 2.1
              requester_name = [{"lang": "en", "text": client_name}]
          else:
              requester_name = None
          internal_req = InternalData(
              subject_type=subject_type,
              requester=client_id,
              requester_name=requester_name,
          )
  
          internal_req.attributes = self.converter.to_internal_filter(
              "openid", self._get_approved_attributes(self.provider.configuration_information["claims_supported"],
                                                      authn_req))
          return internal_req
docs: Parse and verify the authentication request into an internal request.
          :type context: satosa.context.Context
          :rtype: satosa.internal.InternalData
  
          :param context: the current context
          :return: the internal request