code: def _register_endpoints(self, providers):
          
          url_map = []
  
          for endp_category in self.endpoints:
              for binding, endp in self.endpoints[endp_category].items():
                  valid_providers = ""
                  for provider in providers:
                      valid_providers = "{}|^{}".format(valid_providers, provider)
                  valid_providers = valid_providers.lstrip("|")
                  parsed_endp = urlparse(endp)
                  url_map.append(("(%s)/%s$" % (valid_providers, parsed_endp.path),
                                  functools.partial(self.handle_authn_request, binding_in=binding)))
  
          if self.expose_entityid_endpoint():
              parsed_entity_id = urlparse(self.idp.config.entityid)
              url_map.append(("^{0}".format(parsed_entity_id.path[1:]),
                              self._metadata_endpoint))
  
          return url_map
docs: Register methods to endpoints
          :type providers: list[str]
          :rtype: list[(str, ((satosa.context.Context, Any) -> satosa.response.Response, Any))]
          :param providers: A list of backend providers
          :return: A list of endpoint/method pairs