'This is the method that should be used by someone that wants
to authenticate using SAML ECP
:param url: The page that access is sought for
:param idp_entity_id: The entity ID of the IdP that should be
used for authentication
:param op: Which HTTP operation (GET/POST/PUT/DELETE)
:param opargs: Arguments to the HTTP call
:return: The page'

def operation(self, url, idp_entity_id, op, **opargs):

    if (url not in opargs):
        url = self._sp
    opargs['headers'] = self.add_paos_headers(opargs['headers'])
    response = self.send(url, op, **opargs)
    logger.debug(('[Op]    SP    response:    %s' % response))
    if (response.status_code != 200):
        raise SAMLError(('Request    to    SP    failed:    %s' % response.error))
    try:
        respdict = self.parse_soap_message(response.text)
        self.ecp_conversation(respdict, idp_entity_id)
        response = self.send(url, op, **opargs)
    except (soap.XmlParseError, AssertionError, KeyError):
        pass
    if (response.status_code != 404):
        raise SAMLError(('Error    performing    operation:    %s' % (response.error,)))
    return response
