GithubHelp home page GithubHelp logo

Comments (5)

ezhov-evgeny avatar ezhov-evgeny commented on July 19, 2024

@danielloader I think it is possible I'll investigate it

from webdav-client-python-3.

danielloader avatar danielloader commented on July 19, 2024

Lines 138 in client.py
Should really have checked!

`webdav_login`: (optional) login name for WebDAV server can be empty in case using of token auth.
`webdav_password`: (optional) password for WebDAV server can be empty in case using of token auth.
`webdav_token': (optional) token for WebDAV server can be empty in case using of login/password auth.

further investigation, Line 179 on client.py:

    if self.webdav.token:
        webdav_token = "Authorization: OAuth {token}".format(token=self.webdav.token)
        headers.append(webdav_token)
    return dict([map(lambda s: s.strip(), i.split(':', 1)) for i in headers])

This is giving a OAuth value not Bearer, and failing for me.

Relevant RFC https://tools.ietf.org/html/rfc6750#section-2.1

This barebones example (redacted creds) works for me:

import requests

url = f"{hostname}/on/demandware.servlet/webdav/Sites/Impex/src/"

headers = {
  'Content-Type': 'application/x-www-form-urlencoded',
  'Authorization': f'Bearer {bearer_token}'
}

response = requests.request("PROPFIND", url, headers=headers)

print(response.text.encode('utf8'))

from webdav-client-python-3.

danielloader avatar danielloader commented on July 19, 2024

Put the request through mitmproxy, noticed the request header is malformed, doing Authorization: Basic with some junk base64 encoding after.

Okay I think I've worked it out, https://github.com/ezhov-evgeny/webdav-client-python-3/blob/develop/webdav3/client.py#L217 causes the headers added to be overridden.

If I change https://github.com/ezhov-evgeny/webdav-client-python-3/blob/develop/webdav3/client.py#L180 to be a different header from Authorization, it's injected fine.

Deleting https://github.com/ezhov-evgeny/webdav-client-python-3/blob/develop/webdav3/client.py#L217 allows bearer tokens to work if I change https://github.com/ezhov-evgeny/webdav-client-python-3/blob/develop/webdav3/client.py#L217 to Authorization: Bearer instead of Authorization: OAuth

from webdav-client-python-3.

danielloader avatar danielloader commented on July 19, 2024

Created a proof of concept PR, works for me but would appreciate it being looked at as someone new to python.

#42

from webdav-client-python-3.

ezhov-evgeny avatar ezhov-evgeny commented on July 19, 2024

Merged into the develop branch. It will be published in version 3.14.1

from webdav-client-python-3.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.