{ "info": { "author": "Ken Dreyer", "author_email": "ktdreyer@ktdreyer.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Twisted", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6" ], "description": "Kerberos authentication with Twisted's treq\n===========================================\n\n.. image:: https://travis-ci.org/ktdreyer/treq-kerberos.svg?branch=master\n :target: https://travis-ci.org/ktdreyer/treq-kerberos\n\n.. image:: https://badge.fury.io/py/treq-kerberos.svg\n :target: https://badge.fury.io/py/treq-kerberos\n\ntreq-kerberos adds Kerberos (SPNEGO/HTTP Negotiate) authentication for treq.\n\n`treq `_ is a requests-like library for\nmaking HTTP requests asynchronously (non-blocking) using the Twisted framework.\n\ntreq-kerberos is inspired by `requests-kerberos\n`_.\n\n\nSimple Example: making a request\n--------------------------------\n\nGET a URL that requires Kerberos authentication:\n\n.. code-block:: python\n\n from treq_kerberos import TreqKerberosAuth\n import treq_kerberos\n from twisted.internet import defer, reactor\n\n\n @defer.inlineCallbacks\n def example():\n url = 'https://errata.devel.redhat.com/'\n auth = TreqKerberosAuth()\n try:\n response = yield treq_kerberos.get(url, auth=auth)\n content = yield response.content()\n print(content)\n except Exception as e:\n print(e)\n\n\n if __name__ == '__main__':\n example().addCallback(lambda ign: reactor.stop())\n reactor.run()\n\n\n(See the full script at ``examples/get.py``.)\n\n\nOther HTTP methods\n------------------\n\ntreq-kerberos implements the same basic API as treq, so you can call the\nmethods for each of the HTTP verbs:\n\n.. code-block:: python\n\n @defer.inlineCallbacks\n def example():\n url = 'https://example.com/'\n auth = TreqKerberosAuth()\n\n data = {'my': 'parameter'}\n\n # HTTP GET\n response = yield treq_kerberos.get(url, auth=auth)\n\n # HTTP PUT\n response = yield treq_kerberos.put(url, data=data, auth=auth)\n\n # HTTP POST\n response = yield treq_kerberos.post(url, data=data, auth=auth)\n\n # HTTP PATCH\n response = yield treq_kerberos.patch(url, data=data, auth=auth)\n\n # HTTP HEAD (note that content() will always be blank)\n response = yield treq_kerberos.head(url, auth=auth)\n\n # HTTP DELETE\n response = yield treq_kerberos.delete(url, auth=auth)\n\nAlternatively you may also call the general ``request()`` method:\n\n.. code-block:: python\n\n # HTTP GET\n response = yield treq_kerberos.request('GET', url, auth=auth)\n\n\nPreemptive authentication\n-------------------------\n\nOrdinarily, web clients attempt HTTP Negotiate authentication only after\nreceiving a HTTP ``401`` response from the web server. The client then retries\nwith the proper ``Authentication: Negotiate ...`` header.\n\nIf you know your web server will always prompt for HTTP Negotiate\nauthentication, you can skip the first round-trip by setting the\n``force_preemptive=True`` keyword argument when instantiating\n``TreqKerberosAuth``. (This behavior is identical to request-kerberos's\n``force_preemptive`` kwarg for ``HTTPKerberosAuth``.)\n\n.. code-block:: python\n\n @defer.inlineCallbacks\n def example():\n url = 'https://errata.devel.redhat.com/'\n auth = TreqKerberosAuth(force_preemptive=True)\n response = yield treq_kerberos.get(url, auth=auth)\n # ...\n\n\nIntegration with treq upstream\n------------------------------\n\nAt the time of this writing, treq supports HTTP Basic authentication by passing\na ``(username, password)`` tuple via an ``auth`` kwarg.\n\nThis module borrows that same ``auth`` concept. You pass in a\n``TreqNegotiateAuth`` object instead of the username and password tuple.\n\nEventually treq may allow more flexible authentication designs that could be\nsuitable to third parties. When this is available in treq upstream, I want\ntreq-kerberos module to support it, ideally minimizing the API changes to\nsupport such a future transition.\n\nTODO:\n=====\n* Rewrite to use python-gssapi instead of python-kerberos (similar to\n `requests-gssapi `_).\n\nPackages that use this package\n==============================\n\n* `txkoji `_", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ktdreyer/treq-kerberos", "keywords": "twisted,treq,kerberos", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "treq-kerberos", "package_url": "https://pypi.org/project/treq-kerberos/", "platform": "", "project_url": "https://pypi.org/project/treq-kerberos/", "project_urls": { "Homepage": "https://github.com/ktdreyer/treq-kerberos" }, "release_url": "https://pypi.org/project/treq-kerberos/1.2.0/", "requires_dist": null, "requires_python": "", "summary": "Kerberos auth for Twisted's treq", "version": "1.2.0" }, "last_serial": 4075473, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "54569944bd29eb8407bc5f70470ef475", "sha256": "27d44e314b90a3eeca78dfcb9fd13e3ecb6729fbf3cdd82b8e69dbb4890cc1a4" }, "downloads": -1, "filename": "treq-kerberos-1.0.0.tar.gz", "has_sig": true, "md5_digest": "54569944bd29eb8407bc5f70470ef475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4474, "upload_time": "2018-06-29T16:22:29", "url": "https://files.pythonhosted.org/packages/79/74/03c59a0c746c47659de74d549c9ec2ee02b3d387ffa03a4d746e8b590415/treq-kerberos-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "d315a82a7395a6e3c52a9c96760f3c70", "sha256": "480c497b0e83d6e1a1bdf10bfa86bc36f15ebfbe3868d7375ebfd91ae8689a36" }, "downloads": -1, "filename": "treq-kerberos-1.1.0.tar.gz", "has_sig": true, "md5_digest": "d315a82a7395a6e3c52a9c96760f3c70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4572, "upload_time": "2018-07-03T19:42:14", "url": "https://files.pythonhosted.org/packages/3d/61/bd1805ed8270dddb44f2d115645ccf5a6cc1d214d75577d29688b847a0d2/treq-kerberos-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "db7676a0bf2b7ff55dbbd2edfa47ea33", "sha256": "ec1f38587927deaccee11f0e02c6f15229555fdd0b9267bf63da77039806cb03" }, "downloads": -1, "filename": "treq-kerberos-1.2.0.tar.gz", "has_sig": true, "md5_digest": "db7676a0bf2b7ff55dbbd2edfa47ea33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5769, "upload_time": "2018-07-17T21:39:50", "url": "https://files.pythonhosted.org/packages/5f/cc/5946f20dad117dadf495c87424a087952b7c39b087e1b2655c548772d918/treq-kerberos-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "db7676a0bf2b7ff55dbbd2edfa47ea33", "sha256": "ec1f38587927deaccee11f0e02c6f15229555fdd0b9267bf63da77039806cb03" }, "downloads": -1, "filename": "treq-kerberos-1.2.0.tar.gz", "has_sig": true, "md5_digest": "db7676a0bf2b7ff55dbbd2edfa47ea33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5769, "upload_time": "2018-07-17T21:39:50", "url": "https://files.pythonhosted.org/packages/5f/cc/5946f20dad117dadf495c87424a087952b7c39b087e1b2655c548772d918/treq-kerberos-1.2.0.tar.gz" } ] }