ecederstrand / exchangelib

Python client for Microsoft Exchange Web Services (EWS)
BSD 2-Clause "Simplified" License
1.17k stars 249 forks source link

Add Kerberos authentication #96

Closed ecederstrand closed 5 years ago

ecederstrand commented 7 years ago

EWS supports Kerberos authentication, but typically only in an in-house scenario. A starting point for adding Kerberos support: https://github.com/requests/requests-kerberos

ankostis commented 7 years ago

Dear @ecederstrand, would it be possible before this release to add something about this fact? For instance, adding a documentation section in the readme, or adding an extras in the setup.py?

By the way, it would make sense to add requests-ntlm also as an extra in the setup (downstream clients do not always need this library installed) like this:

    --- a/setup.py
    +++ b/setup.py
    install_requires=['requests>=2.7', 'dnspython>=1.14.0', 'pytz', 'lxml',
                      'cached_property', 'future', 'six', 'tzlocal'],
    + extras={
    +     'ntlm': ['requests_ntlm>=0.2.0'], 
    +     'kerberos': ['requests-kerberos>=???'], 
    + }
    packages=['exchangelib'],
ecederstrand commented 7 years ago

I would really like for NTLM auth to work out of the box, since most Exchange servers use this as their default auth method. Having to install extra modules would violate POLA.

Regarding Kerberos, I'm not keen on adding that to the install before someone confirms that they got it working, and preferably with some description of what is needed, if anything. I'm not able to test Kerberos auth on my test server.

It may be as simple as inserting

auth = requests_kerberos.HTTPKerberosAuth(delegate=True)

the correct places in the code.

phillipberndt commented 6 years ago

I monkey-patch this into exchangelib from a script as follows:

import requests_kerberos

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()
exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model

credentials = exchangelib.Credentials("", "")
config = exchangelib.Configuration(..., credentials=credentials, auth_type="GSSAPI")

and can confirm that it works as expected. The wrapper is required because exchangelib will pass username and password to the auth handler, but HTTPKerberosAuth doesn't expect them.

ecederstrand commented 6 years ago

Oooh, very cool! I'll see if I can get this worked in over the next days.

ecederstrand commented 6 years ago

I added minimal support in 3a1def2 following the patch by @phillipberndt.

The solution highlights some design errors that we should fix:

I don't think we will be able to auto-detect Kerberos auth like the other auth methods, unless we actually try it, because Kerberos auth uses the same WWW-Authenticate headers as NTLM but we don't know if a Kerberos ticket is available to exchangelib.

EDIT: We could attempt Kerberos auth automatically if we see the WWW-Authenticate: "Negotiate" header and subprocess.call(['klist', '-s']) == 0 is true (and is prepared for a FileNotFoundError).

ecederstrand commented 6 years ago

BTW, does anyone here know if an Exchange server will ever require a client to authenticate with any of the non-default options described at https://github.com/requests/requests-kerberos (delegation, for example)? In that case, we'll need to allow the user to supply these options somehow.

freenetwork commented 5 years ago

How to use GSSAPI? if i have WWW-Authenticate from apache?

ecederstrand commented 5 years ago

Just a note; a WWW-Authenticate is not enough to tell you that this is Kerberos auth. And you'll have to explain how Apache gets into the picture. Nothing in Exchange or exchangelib uses Apache.

Using Kerberos auth is as simple as using auth_type=GSSAPI. See https://github.com/ecederstrand/exchangelib#setup-and-connecting

Beware that the only confirmation that it works comes from replies to this issue. I have no means to test Kerberos auth myself.

mikeacameron commented 5 years ago

Has anyone gotten this to work?

I've tried using what's shown in the README as well as what @phillipberndt posted as his monkey-patch.

I'm getting a 401 error.

ecederstrand commented 5 years ago

And do you have a valid Kerberos ticket before you start the requests?

mikeacameron commented 5 years ago

And do you have a valid Kerberos ticket before you start the requests?

Please disregard. Turns out we're using NTLMSSP, not Kerberos.

I was able to have it authenticate successfully by using HttpNegotiateAuth from requests_negotiate_sspi.

Thank you.

ecederstrand commented 5 years ago

Ah, ok. Maybe we should add support for SSPI?

fulganta commented 5 years ago

Hi,

I'm trying to use SSO to connect to my mailbox, it seems the way to do it with exchangelib is to use Kerebos from my understanding so far.

I have been using code specified above and got the following error. Not sure where my mistake is. Same code work when I use normal login/pwd credential.

import exchangelib
from exchangelib import DELEGATE, Account, Configuration
import logging
from exchangelib.util import PrettyXmlHandler
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter
import requests_kerberos
logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()])

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()
exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model
credentials = exchangelib.Credentials("", "")

config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx', credentials=credentials, auth_type="GSSAPI")

account = Account(
    primary_smtp_address='name@yyy.com',
    config=config,
    autodiscover=False,
    access_type=DELEGATE)
Broker = account.inbox / 'Broker'

for item in Broker.all().order_by('-datetime_received')[:100]:
    print(item.subject, item.sender, item.datetime_received)

Get the following output:

DEBUG:exchangelib.protocol:Waiting for _protocol_cache_lock
DEBUG:exchangelib.protocol:Protocol __call__ cache miss. Adding key '('https://ews.msg.hk.xxx.com/ews/exchange.asmx', Credentials('', '********'))'
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 26705
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 26585
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 26068
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 25142
DEBUG:exchangelib.transport:Getting docs auth type for https://ews.msg.hk.xxx.com/EWS/types.xsd
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): ews.msg.hk.xxx.com:443
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
DEBUG:exchangelib.transport:Request headers: {'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'text/xml; charset=utf-8'}
DEBUG:exchangelib.transport:Response headers: {'Server': 'Microsoft-IIS/8.5', 'request-id': '555c2929-3550-4c35-8418-358b072bb0ea', 'Set-Cookie': 'ClientId=AGZFGEOJ0UWAHQWJYCYW; expires=Tue, 18-Aug-2020 01:41:13 GMT; path=/; HttpOnly', 'X-WSSecurity-Enabled': 'True', 'X-WSSecurity-For': 'None', 'X-OAuth-Enabled': 'True', 'WWW-Authenticate': 'Negotiate, NTLM', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG02', 'Date': 'Mon, 19 Aug 2019 01:41:12 GMT', 'Content-Length': '0'}
DEBUG:exchangelib.version:Asking server for version info
DEBUG:exchangelib.version:Getting https://ews.msg.hk.xxx.com/EWS/types.xsd with auth type HttpNtlmAuth
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): ews.msg.hk.xxx.com:443
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
DEBUG:exchangelib.version:Request headers: {'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'Keep-Alive', 'Content-Type': 'text/xml; charset=utf-8', 'Authorization': 'NTLM TlRMTVNTUAADAAAAGAAYAFgAAADUANQAcAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAABAAEABEAQAANoKJ4gYBsR0AAAAPpp87soLXQP564Rfj3s+ZFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPiOhjFekoOuWdhzm+2h2X8BAQAAAAAAAD5DrzAvVtUB5ZhfxJ7sQMwAAAAAAgAGAEMASQBCAAEAFgBTAFcAUABJAEgASwBNAFMARwAwADIABAAOAGMAaQBiAC4AbgBlAHQAAwAmAFMAVwBQAEkASABLAE0AUwBHADAAMgAuAGMAaQBiAC4AbgBlAHQABQAUAHIAbwBvAHQAaQB4AC4AbgBlAHQABwAIAD5DrzAvVtUBBgAEAAIAAAAKABAAPCtRZj5WIc04C6DW8bTcSQAAAAAAAAAAlehsECUGMn65RCNqjoKtiQ==', 'Cookie': 'ClientId=9ZKS9CUIKECUVQDFOLCQ; expires=Tue, 18-Aug-2020 01:41:15 GMT; path=/; HttpOnly'}
DEBUG:exchangelib.version:Response code: 401
DEBUG:exchangelib.version:Response headers: {'Server': 'Microsoft-IIS/8.5', 'request-id': '2d71ebca-0785-4aee-b647-32edac0971aa', 'WWW-Authenticate': 'Negotiate, NTLM', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG02', 'Date': 'Mon, 19 Aug 2019 01:41:15 GMT', 'Content-Length': '0'}
DEBUG:exchangelib.version:Response data: b''
INFO:exchangelib.version:Unexpected HTTP 401 when getting https://ews.msg.hk.xxx.com/EWS/types.xsd (b'')
DEBUG:exchangelib.services:Trying API version Exchange2007 for account None
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Waiting for session
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Got session 25142
DEBUG:exchangelib.util:Session 25142 thread 21864: retry 0 timeout 120 POST'ing to https://ews.msg.hk.xxx.com/ews/exchange.asmx after 10s wait
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): ews.msg.hk.xxx.com:443
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 401 0
DEBUG:requests_kerberos.kerberos_:handle_401(): Handling: 401
DEBUG:requests_kerberos.kerberos_:authenticate_user(): Authorization header: Negotiate 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
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 500 None
DEBUG:requests_kerberos.kerberos_:authenticate_user(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_401(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response() has seen 0 401 responses
DEBUG:requests_kerberos.kerberos_:handle_other(): Handling: 500
DEBUG:requests_kerberos.kerberos_:handle_other(): Authenticating the server
DEBUG:requests_kerberos.kerberos_:authenticate_server(): Authenticate header: YIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARugaJeHCQ1XfcjzVkhzo1QVa9VIT6U91MXjUMx3PTj9qmX11QS3fz98jJPqeOW+fguvbbheVc7SRnOa7+xMQJtHNH7/7M0HtEAyO3u4FEhnwBDJ3yeiYulv8+GkRzg1Tb6yMwEv19c8JFhgrICR1I=
DEBUG:requests_kerberos.kerberos_:authenticate_server(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_other(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:exchangelib.util:Retry: 0
Waited: 10
Timeout: 120
Session: 25142
Thread: 21864
Auth type: <requests_kerberos.kerberos_.HTTPKerberosAuth object at 0x000002C8B92686D8>
URL: https://ews.msg.hk.xxx.com/ews/exchange.asmx
HTTP adapter: <exchangelib.protocol.NoVerifyHTTPAdapter object at 0x000002C8B9268860>
Allow redirects: False
Streaming: False
Response time: 0.15599999998812564
Status code: 500
Request headers: {'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'text/xml; charset=utf-8', 'Content-Length': '443', 'Authorization': 'Negotiate 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'}
Response headers: {'Cache-Control': 'private', 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/xml; charset=utf-8', 'Server': 'Microsoft-IIS/8.5', 'request-id': '45438f51-db4e-4227-a5c9-4b21bc87ae0c', 'Set-Cookie': 'ClientId=BTIQKDEEXLWIFFPEA; expires=Tue, 18-Aug-2020 01:41:15 GMT; path=/; HttpOnly, exchangecookie=9e229f8c350e4effacce35175e9c4428; expires=Wed, 19-Aug-2020 01:41:16 GMT; path=/; HttpOnly, X-BackEndCookie=S-1-5-21-2847098101-2387550839-3588296759-385575=u56Lnp2ejJqBzseam82bmsnSy86cytLLz8ec0p2bz57Sxp3IzJ6emczJyZrOgYHNz87G0s/G0s7Hq8/OxcvOxc7K; expires=Wed, 18-Sep-2019 01:41:15 GMT; path=/ews; secure; HttpOnly', 'X-CalculatedBETarget': 'swpihkmsg01.cib.net', 'X-DiagInfo': 'SWPIHKMSG01', 'X-BEServer': 'SWPIHKMSG01', 'X-AspNet-Version': '4.0.30319', 'WWW-Authenticate': 'Negotiate YIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARugaJeHCQ1XfcjzVkhzo1QVa9VIT6U91MXjUMx3PTj9qmX11QS3fz98jJPqeOW+fguvbbheVc7SRnOa7+xMQJtHNH7/7M0HtEAyO3u4FEhnwBDJ3yeiYulv8+GkRzg1Tb6yMwEv19c8JFhgrICR1I=', 'Persistent-Auth': 'true', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG04', 'Date': 'Mon, 19 Aug 2019 01:41:15 GMT'}
Request data: b'<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"><s:Header><t:RequestServerVersion Version="Exchange2007"/></s:Header><s:Body><m:ResolveNames ReturnFullContactData="false"><m:UnresolvedEntry></m:UnresolvedEntry></m:ResolveNames></s:Body></s:Envelope>'
Response data: b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>348</t:LinePosition><t:Violation>The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'

DEBUG:exchangelib.util:Got status code 500 but trying to parse content anyway
DEBUG:exchangelib.util:Session 25142 thread 21864: Useful response from https://ews.msg.hk.xxx.com/ews/exchange.asmx
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Releasing session 25142
DEBUG:exchangelib.services:Adding missing build number Exchange2007
DEBUG:exchangelib.services:Failed to update version info (No header in XML response (b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>348</t:LinePosition><t:Violation>The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'))
WARNING:exchangelib.services:EWS https://ews.msg.hk.xxx.com/ews/exchange.asmx, account None: Exception in _get_elements: Traceback (most recent call last):
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 90, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 215, in _get_response_xml
    raise rme
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 172, in _get_response_xml
    res = self._get_soap_payload(response=r, **parse_opts)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 269, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 305, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry' element is invalid - The value '' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType' - The actual length is less than the MinLength value.

DEBUG:exchangelib.account:Added account: yyy.frelet@xxx.com
DEBUG:exchangelib.services:Getting folder Root (root)
DEBUG:exchangelib.services:Trying API version Exchange2007 for account yyy.frelet@xxx.com
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Waiting for session
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Got session 25142
DEBUG:exchangelib.util:Session 25142 thread 21864: retry 0 timeout 120 POST'ing to https://ews.msg.hk.xxx.com/ews/exchange.asmx after 10s wait
H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 500 None
DEBUG:requests_kerberos.kerberos_:handle_other(): Handling: 500
DEBUG:requests_kerberos.kerberos_:handle_other(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:exchangelib.util:Retry: 0
Waited: 10
Timeout: 120
Session: 25142
Thread: 21864
Auth type: <requests_kerberos.kerberos_.HTTPKerberosAuth object at 0x000002C8B92686D8>
URL: https://ews.msg.hk.xxx.com/ews/exchange.asmx
HTTP adapter: <exchangelib.protocol.NoVerifyHTTPAdapter object at 0x000002C8B9268860>
Allow redirects: False
Streaming: False
Response time: 0.046999999991385266
Status code: 500
Request headers: {'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'text/xml; charset=utf-8', 'Cookie': 'X-BackEndCookie=S-1-5-21-2847098101-2387550839-3588296759-385575=u56Lnp2ejJqBzseam82bmsnSy86cytLLz8ec0p2bz57Sxp3IzJ6emczJyZrOgYHNz87G0s/G0s7Hq8/OxcvOxc7K; ClientId=BTIQKDEEXLWIFFPEA; exchangecookie=9e229f8c350e4effacce35175e9c4428', 'Content-Length': '1166'}
Response headers: {'Cache-Control': 'private', 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/xml; charset=utf-8', 'Server': 'Microsoft-IIS/8.5', 'request-id': '35700312-e4e1-46ce-8f88-9d0624284932', 'X-CalculatedBETarget': 'swpihkmsg01.cib.net', 'X-DiagInfo': 'SWPIHKMSG01', 'X-BEServer': 'SWPIHKMSG01', 'X-AspNet-Version': '4.0.30319', 'Set-Cookie': 'exchangecookie=9e229f8c350e4effacce35175e9c4428; path=/, X-BackEndCookie=S-1-5-21-2847098101-2387550839-3588296759-385575=u56Lnp2ejJqBzseam82bmsnSy86cytLLz8ec0p2bz57Sxp3IzJ6emczJyZrOgYHNz87G0s/G0s7Hq8/OxcvOxcvJ; expires=Wed, 18-Sep-2019 01:41:46 GMT; path=/ews; secure; HttpOnly', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG04', 'Date': 'Mon, 19 Aug 2019 01:41:45 GMT'}
Request data: b'<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"><s:Header><t:RequestServerVersion Version="Exchange2007"/><t:TimeZoneContext><t:TimeZoneDefinition Id="China Standard Time"/></t:TimeZoneContext></s:Header><s:Body><m:GetFolder><m:FolderShape><t:BaseShape>IdOnly</t:BaseShape><t:AdditionalProperties><t:FieldURI FieldURI="folder:ChildFolderCount"/><t:FieldURI FieldURI="folder:EffectiveRights"/><t:FieldURI FieldURI="folder:FolderClass"/><t:FieldURI FieldURI="folder:DisplayName"/><t:FieldURI FieldURI="folder:ParentFolderId"/><t:FieldURI FieldURI="folder:PermissionSet"/><t:FieldURI FieldURI="folder:TotalCount"/><t:FieldURI FieldURI="folder:UnreadCount"/></t:AdditionalProperties></m:FolderShape><m:FolderIds><t:DistinguishedFolderId Id="root"><t:Mailbox><t:EmailAddress>yyy.frelet@xxx.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:DistinguishedFolderId></m:FolderIds></m:GetFolder></s:Body></s:Envelope>'
Response data: b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>513</t:LinePosition><t:Violation>The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'

DEBUG:exchangelib.util:Got status code 500 but trying to parse content anyway
DEBUG:exchangelib.util:Session 25142 thread 21864: Useful response from https://ews.msg.hk.xxx.com/ews/exchange.asmx
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Releasing session 25142
DEBUG:exchangelib.services:Adding missing build number Exchange2007
DEBUG:exchangelib.services:Failed to update version info (No header in XML response (b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>513</t:LinePosition><t:Violation>The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'))
WARNING:exchangelib.services:EWS https://ews.msg.hk.xxx.com/ews/exchange.asmx, account yyy.frelet@xxxx.com: Exception in _get_elements: Traceback (most recent call last):
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'inbox'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'root'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 90, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 215, in _get_response_xml
    raise rme
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 172, in _get_response_xml
    res = self._get_soap_payload(response=r, **parse_opts)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 269, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 305, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'FieldURI' attribute is invalid - The value 'folder:EffectiveRights' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType' - The Enumeration constraint failed.

Traceback (most recent call last):
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'inbox'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'root'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 2060, in <module>
    main()
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 2054, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 1405, in run
    return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 1412, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "H:/yyy/PRJ/Python/sendgrid/sendtest.py", line 23, in <module>
    Broker = account.inbox / 'Broker'
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 73, in __get__
    return obj_dict.setdefault(name, self.func(obj))
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\account.py", line 175, in inbox
    return self.root.get_default_folder(Inbox)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 73, in __get__
    return obj_dict.setdefault(name, self.func(obj))
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\account.py", line 239, in root
    return Root.get_distinguished_root(account=self)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 1756, in get_distinguished_root
    folder=cls(account=account, name=cls.DISTINGUISHED_FOLDER_ID, is_distinguished=True)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 1052, in resolve
    folders = list(FolderCollection(account=account, folders=[folder]).resolve())
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 430, in resolve
    additional_fields=additional_fields
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 490, in get_folders
    shape=ID_ONLY,
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 1148, in call
    shape=shape,
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 90, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 215, in _get_response_xml
    raise rme
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 172, in _get_response_xml
    res = self._get_soap_payload(response=r, **parse_opts)
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 269, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "H:\yyy\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 305, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'FieldURI' attribute is invalid - The value 'folder:EffectiveRights' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType' - The Enumeration constraint failed.
ecederstrand commented 5 years ago

Your Kerberos auth is working fine, but your server does not support the folder:EffectiveRights field. This should fail no matter what auth method you use.

According to https://msdn.microsoft.com/en-us/library/office/aa581334(v=exchg.150).aspx this field was introduced in Exchange 2007 SP1 but you are connecting to a Exchange 2007 server. I'll have a patch shortly to ignore the field in your case.

ecederstrand commented 5 years ago

I'm closing this issue. The main task has been solved and the remaining tasks now have their own issues.

fulganta commented 5 years ago

Hi,

Sorry I'm not sure to get your point. Server connection works fine with the following code:

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter
creds = Credentials(
    username="DOMAIN\\NAME",
    password=pwd
)

config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx', credentials=creds)

account = Account(
    primary_smtp_address='user.name@xxx.com',
    credentials=creds,
    config=config,
    autodiscover=False,
    access_type=DELEGATE)
broker = account.inbox / 'Broker'
ecederstrand commented 5 years ago

No idea why one works and the other doesn’t, but it’s not related to Kerberos auth. Maybe they are hitting different backend servers? Anyway, did you try the patch?

fulganta commented 5 years ago

Hi,

Thanks a lot for your feedback. I see that in the case I use kerberos, it goes with the following API:

DEBUG:exchangelib.services:Trying API version Exchange 2007 for account None

In the case I just use the normal credential login/pwd, it goes for another API: DEBUG:exchangelib.services:Trying API version Exchange2013_SP1 for account None

I'm not sure why.... Can I possibly force one API to be used?

Anyway I'm not very sure how to test your patch. What I did is download locally your lib in my project, unzip it, then with the project virtual env activated I ran python setup.py install And it seems it had done the work. Let me know if I did something wrong.

With the same code as above copied in case of kerebos use, the following lines return an error:

account = Account(
    primary_smtp_address='cyril.frelet@xxx.com',
    config=config,
    autodiscover=False,
    access_type=DELEGATE)

Error: exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry' element is invalid - The value '' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType' - The actual length is less than the MinLength value.

But at the end kerebox can find properly my user name as it print out: DEBUG:exchangelib.account:Added account: user.name@xxx.com

So I'm wondering if something is not missing in the Account parameter. In the version that work I inject the credentials but here credential is empty as kerebos handle it. But mostly I feel it's because it goes to the wrong exchange API.

ecederstrand commented 5 years ago

It's possible that you have two backend servers on different Exchange versions that support different auth mechanisms. You could compare account.protocol.version, account.protocol.service_endpoint and account.protocol.auth_type in the two scenarios.

I'll have a fix for the ErrorSchemaValidation error shortly. It's an issue we only hit with Kerberos auth which isn't exercised by the test suite.

fulganta commented 5 years ago

With Kerberos I get:

version: 
api_version = 'Exchange2007'
build = None
fullname = 'Microsoft Exchange Server 2007'

wihout Kerberos:

version: 
api_version = 'Exchange2013_SP1'
build = '15.0.1473.4'
fullname ='Microsoft Exchange Server 2013 SP1'

with Kerberos: auth = 'GSSAPI'

without Kerberos: auth = 'NTLM'

account.protocol.service_endpoint is same on both side.

The guys from infrastructure team told me that they just have one version of server.... Any idea how I can test that on my side?

Could you let me know also if I tested properly your patch? It seems the error message you mentioned on folder:EffectiveRights was till there after I downloaded locally your lib in my project, unzip it, then with the project virtual env activated I ran python setup.py install

Code:

import exchangelib
from exchangelib import DELEGATE, Account, Configuration
import logging
from exchangelib.util import PrettyXmlHandler
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter
import requests_kerberos

logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()])

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()

exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model
credentials = exchangelib.Credentials("", "")

config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx',
                       credentials=credentials, auth_type="GSSAPI")

account = Account(
    primary_smtp_address='name.user@xxx.com',
    credentials=credentials,
    config=config,
    autodiscover=False,
    access_type=DELEGATE)

version = account.protocol.version
service = account.protocol.service_endpoint
auth = account.protocol.auth_type

inbox = account.inbox

Ouput:


DEBUG:exchangelib.protocol:Waiting for _protocol_cache_lock
DEBUG:exchangelib.protocol:Protocol __call__ cache miss. Adding key '('https://ews.msg.hk.xxx.com/ews/exchange.asmx', Credentials('', '********'))'
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 24292
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 26557
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 24679
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Created session 25125
DEBUG:exchangelib.transport:Getting docs auth type for https://ews.msg.hk.xxx.com/EWS/types.xsd
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): ews.msg.hk.xxx.com:443
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
DEBUG:exchangelib.transport:Request headers: {'yyy-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'text/xml; charset=utf-8'}
DEBUG:exchangelib.transport:Response headers: {'Server': 'Microsoft-IIS/8.5', 'request-id': 'cdb79508-948c-49b9-8ae4-d05dc5239dfd', 'Set-Cookie': 'ClientId=BIOBCWVVUKTMBKDTW; expires=Thu, 20-Aug-2020 07:18:07 GMT; path=/; HttpOnly', 'X-WSSecurity-Enabled': 'True', 'X-WSSecurity-For': 'None', 'X-OAuth-Enabled': 'True', 'WWW-Authenticate': 'Negotiate, NTLM', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG01', 'Date': 'Wed, 21 Aug 2019 07:18:07 GMT', 'Content-Length': '0'}
DEBUG:exchangelib.version:Asking server for version info
DEBUG:exchangelib.version:Getting https://ews.msg.hk.xxx.com/EWS/types.xsd with auth type HttpNtlmAuth
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): ews.msg.hk.xxx.com:443
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "GET /EWS/types.xsd HTTP/1.1" 401 0
DEBUG:exchangelib.version:Request headers: {'yyy-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'Keep-Alive', 'Content-Type': 'text/xml; charset=utf-8', 'Authorization': 'NTLM TlRMTVNTUAADAAAAGAAYAFgAAADUANQAcAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAABAAEABEAQAANoKJ4gYBsR0AAAAPDP1PhHJYEup1xyet5An+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIIi/poXKEAsglMK/OdpY8IBAQAAAAAAAAEzTJbwV9UBhkBkRFs7C3gAAAAAAgAGAEMASQBCAAEAFgBTAFcAUABJAEgASwBNAFMARwAwADIABAAOAGMAaQBiAC4AbgBlAHQAAwAmAFMAVwBQAEkASABLAE0AUwBHADAAMgAuAGMAaQBiAC4AbgBlAHQABQAUAHIAbwBvAHQAaQB4AC4AbgBlAHQABwAIAAEzTJbwV9UBBgAEAAIAAAAKABAAPCtRZj5WIc04C6DW8bTcSQAAAAAAAAAAuUf43taMbnSfPcZabgbGfg==', 'Cookie': 'ClientId=CWY0BPELEUMSWMYWJJG; expires=Thu, 20-Aug-2020 07:18:10 GMT; path=/; HttpOnly'}
DEBUG:exchangelib.version:Response code: 401
DEBUG:exchangelib.version:Response headers: {'Server': 'Microsoft-IIS/8.5', 'request-id': '6617376c-0e54-4378-869d-f05c6859be9d', 'WWW-Authenticate': 'Negotiate, NTLM', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG02', 'Date': 'Wed, 21 Aug 2019 07:18:10 GMT', 'Content-Length': '0'}
DEBUG:exchangelib.version:Response data: b''
INFO:exchangelib.version:Unexpected HTTP 401 when getting https://ews.msg.hk.xxx.com/EWS/types.xsd (b'')
DEBUG:exchangelib.services:Trying API version Exchange2007 for account None
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Waiting for session
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Got session 25125
DEBUG:exchangelib.util:Session 25125 thread 14236: retry 0 timeout 120 POST'ing to https://ews.msg.hk.xxx.com/ews/exchange.asmx after 10s wait
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): ews.msg.hk.xxx.com:443
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 401 0
DEBUG:requests_kerberos.kerberos_:handle_401(): Handling: 401
DEBUG:requests_kerberos.kerberos_:authenticate_yyy(): Authorization header: Negotiate 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
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 500 None
DEBUG:requests_kerberos.kerberos_:authenticate_yyy(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_401(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response() has seen 0 401 responses
DEBUG:requests_kerberos.kerberos_:handle_other(): Handling: 500
DEBUG:requests_kerberos.kerberos_:handle_other(): Authenticating the server
DEBUG:requests_kerberos.kerberos_:authenticate_server(): Authenticate header: YIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuBa3f3c1BWNM4/knFFjbBlQsxz3xPkfEEk8DqR8uuOHGDBMVj9lH02NUQAfQfJk8zChZO47uTVG3YRx+fvrNCAXnBDuqxr4nn6nRbjvn+Xwmd2X5m3fKNRh4cPWEiMSHCXb/ATUnDdAwAaHbs/Ws=
DEBUG:requests_kerberos.kerberos_:authenticate_server(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_other(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:exchangelib.util:Retry: 0
Waited: 10
Timeout: 120
Session: 25125
Thread: 14236
Auth type: <requests_kerberos.kerberos_.HTTPKerberosAuth object at 0x000001AFC01AA160>
URL: https://ews.msg.hk.xxx.com/ews/exchange.asmx
HTTP adapter: <exchangelib.protocol.NoVerifyHTTPAdapter object at 0x000001AFC01AA048>
Allow redirects: False
Streaming: False
Response time: 0.17099999997299165
Status code: 500
Request headers: {'yyy-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'text/xml; charset=utf-8', 'Content-Length': '443', 'Authorization': 'Negotiate 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'}
Response headers: {'Cache-Control': 'private', 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/xml; charset=utf-8', 'Server': 'Microsoft-IIS/8.5', 'request-id': 'aed02ef4-fb57-41e5-a26d-50c6de1026e8', 'Set-Cookie': 'ClientId=UDKUWRDFU0MJLPIYXEDQ; expires=Thu, 20-Aug-2020 07:18:10 GMT; path=/; HttpOnly, exchangecookie=5e604c9e987a45708c2026075954b9e4; expires=Fri, 21-Aug-2020 07:18:10 GMT; path=/; HttpOnly, X-BackEndCookie=S-1-5-21-2847098101-2387550839-3588296759-385575=u56Lnp2ejJqBzseam82bmsnSy86cytLLz8ec0p2bz57Sxp3IzJ6emczJyZrOgYHNz87G0s/G0s3Pq8/Ixc7Hxc7P; expires=Fri, 20-Sep-2019 07:18:10 GMT; path=/ews; secure; HttpOnly', 'X-CalculatedBETarget': 'swpihkmsg01.cib.net', 'X-DiagInfo': 'SWPIHKMSG01', 'X-BEServer': 'SWPIHKMSG01', 'X-AspNet-Version': '4.0.30319', 'WWW-Authenticate': 'Negotiate YIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuBa3f3c1BWNM4/knFFjbBlQsxz3xPkfEEk8DqR8uuOHGDBMVj9lH02NUQAfQfJk8zChZO47uTVG3YRx+fvrNCAXnBDuqxr4nn6nRbjvn+Xwmd2X5m3fKNRh4cPWEiMSHCXb/ATUnDdAwAaHbs/Ws=', 'Persistent-Auth': 'true', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG03', 'Date': 'Wed, 21 Aug 2019 07:18:10 GMT'}
Request data: b'<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"><s:Header><t:RequestServerVersion Version="Exchange2007"/></s:Header><s:Body><m:ResolveNames ReturnFullContactData="false"><m:UnresolvedEntry></m:UnresolvedEntry></m:ResolveNames></s:Body></s:Envelope>'
Response data: b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>348</t:LinePosition><t:Violation>The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'

DEBUG:exchangelib.util:Got status code 500 but trying to parse content anyway
DEBUG:exchangelib.util:Session 25125 thread 14236: Useful response from https://ews.msg.hk.xxx.com/ews/exchange.asmx
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Releasing session 25125
DEBUG:exchangelib.services:Adding missing build number Exchange2007
DEBUG:exchangelib.services:Failed to update version info (No header in XML response (b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>348</t:LinePosition><t:Violation>The \'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry\' element is invalid - The value \'\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType\' - The actual length is less than the MinLength value.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'))
WARNING:exchangelib.services:EWS https://ews.msg.hk.xxx.com/ews/exchange.asmx, account None: Exception in _get_elements: Traceback (most recent call last):
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 90, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 215, in _get_response_xml
    raise rme
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 172, in _get_response_xml
    res = self._get_soap_payload(response=r, **parse_opts)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 269, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 305, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'http://schemas.microsoft.com/exchange/services/2006/messages:UnresolvedEntry' element is invalid - The value '' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:NonEmptyStringType' - The actual length is less than the MinLength value.

DEBUG:exchangelib.account:Added account: user.name@xxxx.com
DEBUG:exchangelib.services:Getting folder Root (root)
DEBUG:exchangelib.services:Trying API version Exchange2007 for account user.name@xxxxcom
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Waiting for session
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Got session 25125
DEBUG:exchangelib.util:Session 25125 thread 14236: retry 0 timeout 120 POST'ing to https://ews.msg.hk.xxx.com/ews/exchange.asmx after 10s wait
DEBUG:urllib3.connectionpool:Resetting dropped connection: ews.msg.hk.xxx.com
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 401 0
DEBUG:requests_kerberos.kerberos_:handle_401(): Handling: 401
DEBUG:requests_kerberos.kerberos_:authenticate_yyy(): Authorization header: Negotiate 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
H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
DEBUG:urllib3.connectionpool:https://ews.msg.hk.xxx.com:443 "POST /ews/exchange.asmx HTTP/1.1" 500 None
DEBUG:requests_kerberos.kerberos_:authenticate_yyy(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_401(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response() has seen 0 401 responses
DEBUG:requests_kerberos.kerberos_:handle_other(): Handling: 500
DEBUG:requests_kerberos.kerberos_:handle_other(): returning <Response [500]>
DEBUG:requests_kerberos.kerberos_:handle_response(): returning <Response [500]>
DEBUG:exchangelib.util:Retry: 0
Waited: 10
Timeout: 120
Session: 25125
Thread: 14236
Auth type: <requests_kerberos.kerberos_.HTTPKerberosAuth object at 0x000001AFC01AA160>
URL: https://ews.msg.hk.xxx.com/ews/exchange.asmx
HTTP adapter: <exchangelib.protocol.NoVerifyHTTPAdapter object at 0x000001AFC01AA048>
Allow redirects: False
Streaming: False
Response time: 0.10999999998603016
Status code: 500
Request headers: {'yyy-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'text/xml; charset=utf-8', 'Cookie': 'X-BackEndCookie=S-1-5-21-2847098101-2387550839-3588296759-385575=u56Lnp2ejJqBzseam82bmsnSy86cytLLz8ec0p2bz57Sxp3IzJ6emczJyZrOgYHNz87G0s/G0s3Pq8/Ixc7Hxc7P; ClientId=UDKUWRDFU0MJLPIYXEDQ; exchangecookie=5e604c9e987a45708c2026075954b9e4', 'Content-Length': '1166', 'Authorization': 'Negotiate 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'}
Response headers: {'Cache-Control': 'private', 'Transfer-Encoding': 'chunked', 'Content-Type': 'text/xml; charset=utf-8', 'Server': 'Microsoft-IIS/8.5', 'request-id': '76770aa6-286e-4011-bb1b-a097b9634acf', 'X-CalculatedBETarget': 'swpihkmsg01.cib.net', 'X-DiagInfo': 'SWPIHKMSG01', 'X-BEServer': 'SWPIHKMSG01', 'X-AspNet-Version': '4.0.30319', 'Set-Cookie': 'exchangecookie=5e604c9e987a45708c2026075954b9e4; path=/, X-BackEndCookie=S-1-5-21-2847098101-2387550839-3588296759-385575=u56Lnp2ejJqBzseam82bmsnSy86cytLLz8ec0p2bz57Sxp3IzJ6emczJyZrOgYHNz87G0s/G0s3Pq8/IxcvGxczK; expires=Fri, 20-Sep-2019 07:49:35 GMT; path=/ews; secure; HttpOnly', 'WWW-Authenticate': 'Negotiate YIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuHZzkGen2xspY9oGFt4GhrPGhKKovvNKmbRsK88XKgmHggXoSi4kkkFdsrcGxpdQKRHpOlx5F5iv7ICUyrDzGrWB4VBO5hue2PGbdO+cs71oC3NuaP0fWqL/Ezoz5xK9/LO2eu2tm6S1n2f8nzJw=', 'Persistent-Auth': 'true', 'X-Powered-By': 'ASP.NET', 'X-FEServer': 'SWPIHKMSG02', 'Date': 'Wed, 21 Aug 2019 07:49:34 GMT'}
Request data: b'<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"><s:Header><t:RequestServerVersion Version="Exchange2007"/><t:TimeZoneContext><t:TimeZoneDefinition Id="China Standard Time"/></t:TimeZoneContext></s:Header><s:Body><m:GetFolder><m:FolderShape><t:BaseShape>IdOnly</t:BaseShape><t:AdditionalProperties><t:FieldURI FieldURI="folder:ChildFolderCount"/><t:FieldURI FieldURI="folder:EffectiveRights"/><t:FieldURI FieldURI="folder:FolderClass"/><t:FieldURI FieldURI="folder:DisplayName"/><t:FieldURI FieldURI="folder:ParentFolderId"/><t:FieldURI FieldURI="folder:PermissionSet"/><t:FieldURI FieldURI="folder:TotalCount"/><t:FieldURI FieldURI="folder:UnreadCount"/></t:AdditionalProperties></m:FolderShape><m:FolderIds><t:DistinguishedFolderId Id="root"><t:Mailbox><t:EmailAddress>user.name@xxx.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></t:DistinguishedFolderId></m:FolderIds></m:GetFolder></s:Body></s:Envelope>'
Response data: b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>513</t:LinePosition><t:Violation>The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'

DEBUG:exchangelib.util:Got status code 500 but trying to parse content anyway
DEBUG:exchangelib.util:Session 25125 thread 14236: Useful response from https://ews.msg.hk.xxx.com/ews/exchange.asmx
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Releasing session 25125
DEBUG:exchangelib.services:Adding missing build number Exchange2007
DEBUG:exchangelib.services:Failed to update version info (No header in XML response (b'<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorSchemaValidation</faultcode><faultstring xml:lang="en-US">The request failed schema validation: The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</faultstring><detail><e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorSchemaValidation</e:ResponseCode><e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request failed schema validation.</e:Message><t:MessageXml xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><t:LineNumber>2</t:LineNumber><t:LinePosition>513</t:LinePosition><t:Violation>The \'FieldURI\' attribute is invalid - The value \'folder:EffectiveRights\' is invalid according to its datatype \'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType\' - The Enumeration constraint failed.</t:Violation></t:MessageXml></detail></s:Fault></s:Body></s:Envelope>'))
WARNING:exchangelib.services:EWS https://ews.msg.hk.xxx.com/ews/exchange.asmx, account user.name@xxxx.com: Exception in _get_elements: Traceback (most recent call last):
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'inbox'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'root'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 90, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 215, in _get_response_xml
    raise rme
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 172, in _get_response_xml
    res = self._get_soap_payload(response=r, **parse_opts)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 269, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 305, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'FieldURI' attribute is invalid - The value 'folder:EffectiveRights' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType' - The Enumeration constraint failed.

Traceback (most recent call last):
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'inbox'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 69, in __get__
    return obj_dict[name]
KeyError: 'root'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 2060, in <module>
    main()
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 2054, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 1405, in run
    return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\pydevd.py", line 1412, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Dev/sendgrid/SSO.py", line 35, in <module>
    inbox = account.inbox
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 73, in __get__
    return obj_dict.setdefault(name, self.func(obj))
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\account.py", line 175, in inbox
    return self.root.get_default_folder(Inbox)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\cached_property.py", line 73, in __get__
    return obj_dict.setdefault(name, self.func(obj))
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\account.py", line 239, in root
    return Root.get_distinguished_root(account=self)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 1756, in get_distinguished_root
    folder=cls(account=account, name=cls.DISTINGUISHED_FOLDER_ID, is_distinguished=True)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 1052, in resolve
    folders = list(FolderCollection(account=account, folders=[folder]).resolve())
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 430, in resolve
    additional_fields=additional_fields
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\folders.py", line 490, in get_folders
    shape=ID_ONLY,
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 1148, in call
    shape=shape,
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 90, in _get_elements
    response = self._get_response_xml(payload=payload)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 215, in _get_response_xml
    raise rme
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 172, in _get_response_xml
    res = self._get_soap_payload(response=r, **parse_opts)
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 269, in _get_soap_payload
    cls._raise_soap_errors(fault=fault)  # Will throw SOAPError or custom EWS error
  File "H:\user\PRJ\Python\sendgrid\venv\lib\site-packages\exchangelib\services.py", line 305, in _raise_soap_errors
    raise vars(errors)[code](msg)
exchangelib.errors.ErrorSchemaValidation: The request failed schema validation. The 'FieldURI' attribute is invalid - The value 'folder:EffectiveRights' is invalid according to its datatype 'http://schemas.microsoft.com/exchange/services/2006/types:UnindexedFieldURIType' - The Enumeration constraint failed.
ecederstrand commented 5 years ago

The change in API versions could be due to the way we guess the server version. It's possible we use the highest supported version in one scenario, and the lowest supported version in the other scenario.

I'm releasing a new version shortly that will contain all the patches. It also allows you to skip the dummy Credentials("", "") object.

ecederstrand commented 5 years ago

Version 2.0.0 released.

fulganta commented 5 years ago

Man it's great it works now with version 2.0.0!!!! I can say authentication is even faster.

Here is the final code that works

import exchangelib
from exchangelib import DELEGATE, Account, Configuration
import logging
from exchangelib.util import PrettyXmlHandler
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter
import requests_kerberos

logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()])

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()

exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model
credentials = exchangelib.Credentials("", "")

config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx',
                       credentials=credentials, auth_type="GSSAPI")

account = Account(
    primary_smtp_address='user.name@xxx.com',
    config=config,
    autodiscover=False,
    access_type=DELEGATE)
fulganta commented 5 years ago

By the way might be good to deploy what you talked about to avoid setup the emptycredentials = exchangelib.Credentials("", "") I tried

config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx',
                       , auth_type="GSSAPI") 

but it doesn't work.

ecederstrand commented 5 years ago

What is the error you get in the latter case? Can you find out why it’s not working? You’re supposed to not have to fiddle with AUTH_TYPE_MAP or supply dummy credentials.

fulganta commented 5 years ago

If I run:

logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()])
BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()
exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model
config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx')

I get the following error:

ValueError: Auth type 'NTLM' requires credentials
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Closing sessions

If I run:

config = Configuration(service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx'
                       , auth_type="GSSAPI")

I get error:

ValueError: Auth type 'GSSAPI' requires credentials
DEBUG:exchangelib.protocol:Server ews.msg.hk.xxx.com: Closing sessions
ecederstrand commented 5 years ago

Ok. This one:

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()
exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model
config = Configuration(
    service_endpoint='https://ews.msg.hk.intranatixis.com/ews/exchange.asmx'
)

fails because you still have to specify auth_type=GSSAPI explicitly. Otherwise, we end up guessing NTLM because Kerberos and NTLM share some HTTP headers. There's #625 to track that.

This one:

config = Configuration(
    service_endpoint='https://ews.msg.hk.intranatixis.com/ews/exchange.asmx',
    auth_type="GSSAPI"
)

fails because you must specify the auth type with the exchangelib.GSSAPI constant, not the string 'GSSAPI'. But since you monkey-patched AUTH_TYPE_MAP above, the auth_type valiadation that we do doesn't trigger.

So , a clean version without fiddling with AUTH_TYPE_MAP should work:

from exchangelib import Configuration, Account, DELEGATE, GSSAPI
config = Configuration(
    service_endpoint='https://ews.msg.hk.intranatixis.com/ews/exchange.asmx',
    auth_type=GSSAPI,
)
account = Account(
    primary_smtp_address='user.name@xxx.com',
    config=config,
    autodiscover=False,
    access_type=DELEGATE,
)

Autodiscovery still doesn't work with Kerberos yet, unfortunately, unless you use exchangelib.discover directly.

fulganta commented 5 years ago

Hi,

Many thanks for your feedback. So I removed

exchangelib.transport.AUTH_TYPE_MAP["GSSAPI"] = auth_model
credentials = exchangelib.Credentials("", "")

but in Configuration I have to write auth_type='gssapi' . auth_type=GSSAPIdoesn't work as you wrote up there.

Now code is like:

from exchangelib import DELEGATE, Account, Configuration
import logging
from exchangelib.util import PrettyXmlHandler
from exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter
import requests_kerberos

logging.basicConfig(level=logging.DEBUG, handlers=[PrettyXmlHandler()])

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter

def auth_model(**kwargs):
    return requests_kerberos.HTTPKerberosAuth()

config = Configuration(
    service_endpoint='https://ews.msg.hk.xxx.com/ews/exchange.asmx',
    auth_type='gssapi'
)

account = Account(
    primary_smtp_address='user.name@xxx.com',
    config=config,
    autodiscover=False,
    access_type=DELEGATE)

It would be good to find a way to get ride of the monkey-patchBaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter