Exemple #1
0
    def _challenge_request(self, response, **kwargs):
        """Forms a CHAP request based on a real PreparedRequest.

        Args:
            response: The original 401 requests.Response() instance.
            **kwargs: Keyword arguments to pass with subsequent requests.

        Returns:
            An instance of requests.Response() with the appropriate
                'X-CHAP:challenge' header.
        """
        logging.debug('Sending challenge request')
        request = _consume_response(response)
        if self.version == 0:
            challenge = self.username
        else:
            challenge = crtauth_client.create_request(self.username)
        request.headers['X-CHAP'] = 'request:%s' % challenge
        request.url = _auth_url(request.url)
        # HEAD is no longer required as of crtauth 0.99.3, but it shouldn't
        # hurt for compatibility with older versions.
        request.method = 'HEAD'
        challenge_response = response.connection.send(request, **kwargs)
        challenge_response.history.append(response)
        return challenge_response
Exemple #2
0
def _authenticate(base_url, username, private_key_filename):

    try:
        with open(private_key_filename) as f:
            signer = ssh.SingleKeySigner(f.read())
    except:
        sys.stderr.write("ERROR: Key file must be a passphraseless private key " "generated by ssh-keygen")
        sys.exit(1)

    challenge = _auth_get(base_url, "request:%s" % client.create_request(username))
    hostname = urlparse.urlparse(base_url).netloc
    if hostname.index(":") != -1:
        # netloc might contain port information as well
        hostname = hostname[: hostname.index(":")]
    response = client.create_response(challenge, hostname, signer)
    return _auth_get(base_url, "response:" + response)
Exemple #3
0
def _authenticate(base_url, username, private_key_filename):

    try:
        with open(private_key_filename) as f:
            signer = ssh.SingleKeySigner(f.read())
    except:
        sys.stderr.write(
            'ERROR: Key file must be a passphraseless private key '
            'generated by ssh-keygen')
        sys.exit(1)

    challenge = _auth_get(base_url,
                          'request:%s' % client.create_request(username))
    hostname = urlparse.urlparse(base_url).netloc
    if hostname.index(':') != -1:
        # netloc might contain port information as well
        hostname = hostname[:hostname.index(':')]
    response = client.create_response(challenge, hostname, signer)
    return _auth_get(base_url, 'response:' + response)