From c2d8c59ab237b7c3b83855605161d510f56b4a54 Mon Sep 17 00:00:00 2001 From: Erik Cederstrand Date: Thu, 23 May 2019 22:21:59 +0200 Subject: [PATCH 1/8] Replace deprecated Ntlm() with NtlmContext() Refs #111 --- requests_ntlm/requests_ntlm.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/requests_ntlm/requests_ntlm.py b/requests_ntlm/requests_ntlm.py index 23db0cc..ad858ae 100644 --- a/requests_ntlm/requests_ntlm.py +++ b/requests_ntlm/requests_ntlm.py @@ -71,7 +71,11 @@ def retry_using_http_NTLM_auth(self, auth_header_field, auth_header, # ntlm returns the headers as a base64 encoded bytestring. Convert to # a string. - context = ntlm.Ntlm() + context = ntlm.NtlmContext( + username=self.username, + password=self.password, + domain=self.domain or None + ) negotiate_message = context.create_negotiate_message(self.domain).decode('ascii') auth = u'%s %s' % (auth_type, negotiate_message) request.headers[auth_header] = auth From cc32522f3ef60acd2f3b485c89e4bf9b0c5ad22b Mon Sep 17 00:00:00 2001 From: Erik Cederstrand Date: Thu, 23 May 2019 22:23:48 +0200 Subject: [PATCH 2/8] Bump ntlm_auth version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d7c6e0b..fff258a 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ name='requests_ntlm', version='1.1.0', packages=[ 'requests_ntlm' ], - install_requires=[ 'requests>=2.0.0', 'ntlm-auth>=1.0.2', 'cryptography>=1.3' ], + install_requires=[ 'requests>=2.0.0', 'ntlm-auth>=1.2.0', 'cryptography>=1.3' ], provides=[ 'requests_ntlm' ], author='Ben Toews', author_email='mastahyeti@gmail.com', From 76a5717b35b62126e182df37d99bf806db7b5e2a Mon Sep 17 00:00:00 2001 From: Erik Cederstrand Date: Thu, 23 May 2019 22:24:15 +0200 Subject: [PATCH 3/8] Bump version here also --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ede853a..eb885c9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ requests>=2.0.0 -ntlm-auth>=1.0.2 +ntlm-auth>=1.2.0 cryptography>=1.3 flask pytest From 1c15c4cdbde9dc6c9793e22cb000c78fa2dace76 Mon Sep 17 00:00:00 2001 From: Erik Cederstrand Date: Fri, 24 May 2019 16:29:58 +0200 Subject: [PATCH 4/8] Pin pytest-cov to <2.6 See https://github.com/z4r/python-coveralls/issues/66 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index eb885c9..b396b6f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,5 +3,5 @@ ntlm-auth>=1.2.0 cryptography>=1.3 flask pytest -pytest-cov +pytest-cov<2.6 wheel From 3479bd5badcaf118712c3657bc284aa2cd8b708c Mon Sep 17 00:00:00 2001 From: Erik Cederstrand Date: Fri, 24 May 2019 16:44:59 +0200 Subject: [PATCH 5/8] Replace unknown method usage NtlmContext does not have a create_negotiate_message method. Replace with what Ntlm.create_negotiate_message() did. --- requests_ntlm/requests_ntlm.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requests_ntlm/requests_ntlm.py b/requests_ntlm/requests_ntlm.py index ad858ae..0c03c1b 100644 --- a/requests_ntlm/requests_ntlm.py +++ b/requests_ntlm/requests_ntlm.py @@ -1,3 +1,4 @@ +import base64 import binascii import sys import warnings @@ -76,7 +77,7 @@ def retry_using_http_NTLM_auth(self, auth_header_field, auth_header, password=self.password, domain=self.domain or None ) - negotiate_message = context.create_negotiate_message(self.domain).decode('ascii') + negotiate_message = base64.b64encode(context.step()).decode('ascii') auth = u'%s %s' % (auth_type, negotiate_message) request.headers[auth_header] = auth From 6433c70fd519113c4a13e74e9e7a8089a5165ae2 Mon Sep 17 00:00:00 2001 From: "EKC (Erik Cederstrand)" Date: Mon, 27 May 2019 14:48:36 +0200 Subject: [PATCH 6/8] Replace more usage of Ntlm() methods --- requests_ntlm/requests_ntlm.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/requests_ntlm/requests_ntlm.py b/requests_ntlm/requests_ntlm.py index 0c03c1b..a253607 100644 --- a/requests_ntlm/requests_ntlm.py +++ b/requests_ntlm/requests_ntlm.py @@ -73,9 +73,9 @@ def retry_using_http_NTLM_auth(self, auth_header_field, auth_header, # ntlm returns the headers as a base64 encoded bytestring. Convert to # a string. context = ntlm.NtlmContext( - username=self.username, - password=self.password, - domain=self.domain or None + username=self.username, + password=self.password, + domain=self.domain or None, ) negotiate_message = base64.b64encode(context.step()).decode('ascii') auth = u'%s %s' % (auth_type, negotiate_message) @@ -115,17 +115,12 @@ def retry_using_http_NTLM_auth(self, auth_header_field, auth_header, ).strip() # Parse the challenge in the ntlm context - context.parse_challenge_message(ntlm_header_value[len(auth_strip):]) + challenge_token = base64.b64decode(ntlm_header_value[len(auth_strip):]) # build response # Get the response based on the challenge message - authenticate_message = context.create_authenticate_message( - self.username, - self.password, - self.domain, - server_certificate_hash=server_certificate_hash - ) - authenticate_message = authenticate_message.decode('ascii') + context._server_certificate_hash = server_certificate_hash + authenticate_message = base64.b64encode(context.step(challenge_token)).decode('ascii') auth = u'%s %s' % (auth_type, authenticate_message) request.headers[auth_header] = auth @@ -136,7 +131,7 @@ def retry_using_http_NTLM_auth(self, auth_header_field, auth_header, response3.history.append(response2) # Get the session_security object created by ntlm-auth for signing and sealing of messages - self.session_security = context.session_security + self.session_security = context._session_security return response3 From 6a911b81b6fb0e0a654bfac4395089ec38dce006 Mon Sep 17 00:00:00 2001 From: "EKC (Erik Cederstrand)" Date: Mon, 27 May 2019 14:51:32 +0200 Subject: [PATCH 7/8] Only test currently supported Python versions --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e5ef98c..5b27436 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,10 @@ language: python python: - - "2.6" - "2.7" - - "3.3" - - "3.4" - "3.5" - "3.6" + - "3.7" install: - pip install -U pip setuptools From bec27069907abf7f5b4abe15106a85a6e92e226f Mon Sep 17 00:00:00 2001 From: "EKC (Erik Cederstrand)" Date: Mon, 27 May 2019 14:54:43 +0200 Subject: [PATCH 8/8] Default distro doesn't have Python 3.7 --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 5b27436..e10d016 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ language: python +os: linux +dist: xenial + python: - "2.7" - "3.5"