'Obtains auth data and decorates a request with that.
:param method: HTTP method of the request
:param url: relative URL of the request (path)
:param headers: HTTP headers of the request
:param body: HTTP body in case of POST / PUT
:param filters: select a base URL out of the catalog
:return: a Tuple (url, headers, body)'

def auth_request(self, method, url, headers=None, body=None, filters=None):

    orig_req = dict(url=url, headers=headers, body=body)
    (auth_url, auth_headers, auth_body) = self._decorate_request(filters, method, url, headers, body)
    auth_req = dict(url=auth_url, headers=auth_headers, body=auth_body)
    if (self.alt_part is not None):
        if (self.alt_auth_data is not None):
            (alt_url, alt_headers, alt_body) = self._decorate_request(filters, method, url, headers, body, auth_data=self.alt_auth_data)
            alt_auth_req = dict(url=alt_url, headers=alt_headers, body=alt_body)
            if (auth_req[self.alt_part] == alt_auth_req[self.alt_part]):
                raise exceptions.BadAltAuth(part=self.alt_part)
            auth_req[self.alt_part] = alt_auth_req[self.alt_part]
        else:
            if (auth_req[self.alt_part] == orig_req[self.alt_part]):
                raise exceptions.BadAltAuth(part=self.alt_part)
            auth_req[self.alt_part] = orig_req[self.alt_part]
        self.reset_alt_auth_data()
    return (auth_req['url'], auth_req['headers'], auth_req['body'])
