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
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)
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)