Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

401 error while connecting to EWS #36

Open
sunilsunderrajdev opened this issue Jan 30, 2019 · 3 comments
Open

401 error while connecting to EWS #36

sunilsunderrajdev opened this issue Jan 30, 2019 · 3 comments
Labels

Comments

@sunilsunderrajdev
Copy link

I am connecting to EWS, but I get 401 error
urllib.error.HTTPError: HTTP Error 401: Anonymous Request Disallowed

Below is the code
ssl._create_default_https_context = ssl._create_unverified_context
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
url = "https://xxx.xxx.xxx.com/EWS/Services.wsdl"
username = 'DOMAIN\USER'
password = 'PASS'
ntlm = WindowsHttpAuthenticated(username=username,password=password)
client = Client(url=url,transport=ntlm)

@sunilsunderrajdev sunilsunderrajdev changed the title I am connecting to EWS, but I get 401 error 401 error while connecting to EWS Jan 30, 2019
@cackharot
Copy link
Owner

Can you go through this doc https://suds-py3.readthedocs.io/en/latest/#windows-ntlm

If you could share a simple NET WCF service with NTML auth enabled, i could test and fix if possible. Have a look at examples folder and submit a pull request.

@Dineshk77
Copy link

@cackharot
I am having the same issue. Below is my code and logs

code:

from suds.client import Client
from suds.transport.https import WindowsHttpAuthenticated
ntlm = WindowsHttpAuthenticated(username="domain\\"+username,password=password)
client = Client(url,transport=ntlm)

error logs:

HTTP Error 401: Unauthorized
Traceback (most recent call last):
  File "c:\Python3\lib\site-packages\suds\transport\http.py", line 63, in open
    return self.u2open(u2request)
  File "c:\Python3\lib\site-packages\suds\transport\http.py", line 119, in u2open
    return url.open(u2request, timeout=tm)
  File "c:\Python3\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "c:\Python3\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "c:\Python3\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "c:\Python3\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "c:\Python3\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 401: Unauthorized

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Development\github\fdoc-buildscripts\pythonLibs\Symbols.py", line 51, in uploadCer
    client = Client(self.cerServer["url"],transport=ntlm)
  File "c:\Python3\lib\site-packages\suds\client.py", line 110, in __init__
    self.wsdl = reader.open(url)
  File "c:\Python3\lib\site-packages\suds\reader.py", line 151, in open
    d = self.fn(url, self.options)
  File "c:\Python3\lib\site-packages\suds\wsdl.py", line 135, in __init__
    d = reader.open(url)
  File "c:\Python3\lib\site-packages\suds\reader.py", line 78, in open
    d = self.download(url)
  File "c:\Python3\lib\site-packages\suds\reader.py", line 94, in download
    fp = self.options.transport.open(Request(url))
  File "c:\Python3\lib\site-packages\suds\transport\https.py", line 61, in open
    return HttpTransport.open(self, request)
  File "c:\Python3\lib\site-packages\suds\transport\http.py", line 65, in open
    raise TransportError(str(e), e.code, e.fp)
suds.transport.TransportError: HTTP Error 401: Unauthorized

Note:

  • same code works for python2.7 (suds==0.4 and python-ntlm==1.1.0)
  • Fails in python3.6 (suds-py3==1.3.3.0 and python-ntlm3==1.0.2)

@Dineshk77
Copy link

@cackharot seems the issue is with https://github.com/trustrachel/python-ntlm3. where the auth_header_value supposed to be a list. The fixes are here in https://github.com/mullender/python-ntlm/blob/master/python30/ntlm/HTTPNtlmAuthHandler.py.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants