def METHOD_NAME(cls, entityid=None, relay_state="", sign=None, sign_alg=None, digest_alg=None):
    """Makes an authentication request.
    :param entityid: The entity ID of the IdP to send the request to
    :param relay_state: To where the user should be returned after
        successfull log in.
    :param sign: Whether the request should be signed or not.
    :return: AuthnRequest response
    """
    eelist = []
    # ----------------------------------------
    # <paos:Request>
    # ----------------------------------------
    my_url = cls.service_urls(BINDING_PAOS)[0]
    # must_understand and actor according to the standard
    #
    paos_request = paos.Request(
        must_understand="1",
        actor=ACTOR,
        response_consumer_url=my_url,
        service=SERVICE,
    )
    eelist.append(element_to_extension_element(paos_request))
    # ----------------------------------------
    # <samlp:AuthnRequest>
    # ----------------------------------------
    logger.info(f"entityid: {entityid}, binding: {BINDING_SOAP}")
    location = cls._sso_location(entityid, binding=BINDING_SOAP)
    req_id, authn_req = cls.create_authn_request(
        location,
        binding=BINDING_PAOS,
        service_url_binding=BINDING_PAOS,
        sign=sign,
        sign_alg=sign_alg,
        digest_alg=digest_alg,
    )
    body = soapenv.Body()
    body.extension_elements = [element_to_extension_element(authn_req)]
    # ----------------------------------------
    # <ecp:Request>
    # ----------------------------------------
    #        idp = samlp.IDPEntry(
    #            provider_id = "https://idp.example.org/entity",
    #            name = "Example identity provider",
    #            loc = "https://idp.example.org/saml2/sso",
    #            )
    #
    #        idp_list = samlp.IDPList(idp_entry= [idp])
    idp_list = None
    ecp_request = ecp.Request(
        actor=ACTOR,
        must_understand="1",
        provider_name=None,
        issuer=saml.Issuer(text=authn_req.issuer.text),
        idp_list=idp_list,
    )
    eelist.append(element_to_extension_element(ecp_request))
    # ----------------------------------------
    # <ecp:RelayState>
    # ----------------------------------------
    relay_state = ecp.RelayState(actor=ACTOR, must_understand="1", text=relay_state)
    eelist.append(element_to_extension_element(relay_state))
    header = soapenv.Header()
    header.extension_elements = eelist
    # ----------------------------------------
    # The SOAP envelope
    # ----------------------------------------
    soap_envelope = soapenv.Envelope(header=header, body=body)
    return req_id, str(soap_envelope)