{ "info": { "author": "Santiago Saavedra", "author_email": "ssaavedra@gpul.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Session" ], "description": "DRF JWT + Knox\n==============\n\n|Build Status| |codecov| |PyPI version| |Requirements Status|\n\nThis package provides an authentication mechanism for Django REST\nFramework based on `JSON Web\nTokens `__ in the browser backed up\nby `Knox `__-powered\ntokens in the database.\n\nThis package aims to take the better parts of both worlds, including:\n\n- Expirable tokens: The tokens may be manually expired in the database,\n so a user can log out of all other logged-in places, or everywhere.\n- Different tokens per login attempt (per user-agent), meaning that a\n user's session is tied to the specific machine and logging can be\n segregated per usage.\n- JWT-based tokens, so the token can have an embedded expiration time,\n and further metadata for other applications.\n- Tokens are generated via OpenSSL so that they are cryptographically\n more secure.\n- Only the tokens' hashes are stored in the database, so that even if\n the database gets dumped, an attacker cannot impersonate people\n through existing credentials\n- Other applications sharing the JWT private key can also decrypt the\n JWT\n\nUsage\n=====\n\nAdd this application **and knox** to ``INSTALLED_APPS`` in your\n``settings.py``.\n\nThen, add this app's routes to some of your ``urlpatterns``.\n\nYou can use the ``verify`` endpoint to verify whether a token is valid\nor not (which may be useful in a microservice architecture).\n\nTests\n=====\n\nTests are automated with ``tox`` and run on Travis-CI automatically. You\ncan check the status in Travis, or just run ``tox`` from the command\nline.\n\nContributing\n============\n\nThis project uses the GitHub Flow approach for contributing, meaning\nthat we would really appreciate it if you would send patches as Pull\nRequests in GitHub. If for any reason you prefer to send patches by\nemail, they are also welcome and will end up being integrated here.\n\nLicense\n=======\n\nThis code is released under the Apache Software License Version 2.0.\n\n.. |Build Status| image:: https://travis-ci.org/ssaavedra/drf-jwt-knox.svg?branch=master\n :target: https://travis-ci.org/ssaavedra/drf-jwt-knox\n.. |codecov| image:: https://codecov.io/gh/ssaavedra/drf-jwt-knox/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/ssaavedra/drf-jwt-knox\n.. |PyPI version| image:: https://img.shields.io/pypi/v/drf-jwt-knox.svg\n :target: https://pypi.python.org/pypi/drf-jwt-knox\n.. |Requirements Status| image:: https://requires.io/github/ssaavedra/drf-jwt-knox/requirements.svg?branch=master\n :target: https://requires.io/github/ssaavedra/drf-jwt-knox/requirements/?branch=master\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ssaavedra/drf-jwt-knox", "keywords": "", "license": "Apache2", "maintainer": "", "maintainer_email": "", "name": "drf-jwt-knox", "package_url": "https://pypi.org/project/drf-jwt-knox/", "platform": "", "project_url": "https://pypi.org/project/drf-jwt-knox/", "project_urls": { "Homepage": "https://github.com/ssaavedra/drf-jwt-knox" }, "release_url": "https://pypi.org/project/drf-jwt-knox/0.1.0/", "requires_dist": [ "PyJWT (~=1.4)", "django-rest-knox (~=2.2)", "djangorestframework (~=3.4)", "six (~=1.10)", "pypandoc (~=1.2); extra == 'dev'", "coverage (~=4.2); extra == 'test'", "pytest (~=3.0.2); extra == 'test'", "tox (~=2.3); extra == 'test'" ], "requires_python": "", "summary": "JSON Web Tokens with a Knox-powered database backend", "version": "0.1.0" }, "last_serial": 2393394, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "6ffab4c61e251fa093e969d948a8a8ec", "sha256": "daa5bfd108944482638e29c20d5ded2f506f003e4454b533299c4c36beaf710d" }, "downloads": -1, "filename": "drf_jwt_knox-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6ffab4c61e251fa093e969d948a8a8ec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10338, "upload_time": "2016-10-11T14:30:41", "url": "https://files.pythonhosted.org/packages/df/84/5ba3795d68ad4d89b838a88d33bee3e94563e3fbbf9b2d4bd81c79b06b92/drf_jwt_knox-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1b985d01fe0c63229ddf4f7e222b97b", "sha256": "16a8579ae95dcaeaf892af94e31816c6e8965f9ee12b4504d6026f99cffce4e2" }, "downloads": -1, "filename": "drf-jwt-knox-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b1b985d01fe0c63229ddf4f7e222b97b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10842, "upload_time": "2016-10-11T14:30:43", "url": "https://files.pythonhosted.org/packages/5f/0a/4868fd63ead7ec2c864939dbb39950af6bdcbd354a41ac8a03afeb73a2d3/drf-jwt-knox-0.1.0.tar.gz" } ], "0.1.0.dev1": [ { "comment_text": "", "digests": { "md5": "8a061532406e71204624283c65505751", "sha256": "3edfd37f572309f194e9556a9c48da63d23954f0c2aff8d321ba32c8866ccaab" }, "downloads": -1, "filename": "drf_jwt_knox-0.1.0.dev1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8a061532406e71204624283c65505751", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10321, "upload_time": "2016-10-11T14:04:19", "url": "https://files.pythonhosted.org/packages/0a/27/be354c1346d64e4ecff2143fc2f987c666db82842f397dafb5b3a347fc67/drf_jwt_knox-0.1.0.dev1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48f66430751083ae6f538372094a6f7f", "sha256": "a096c3ab7fa46692871550fae86d093b32535367ec4a5efe91da49f2a179168e" }, "downloads": -1, "filename": "drf-jwt-knox-0.1.0.dev1.tar.gz", "has_sig": false, "md5_digest": "48f66430751083ae6f538372094a6f7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10795, "upload_time": "2016-10-11T14:04:23", "url": "https://files.pythonhosted.org/packages/69/91/563a6bd1f39f5c375b7b89bd2d83fd1d52bbd9a7f4f3359ce31be176d972/drf-jwt-knox-0.1.0.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6ffab4c61e251fa093e969d948a8a8ec", "sha256": "daa5bfd108944482638e29c20d5ded2f506f003e4454b533299c4c36beaf710d" }, "downloads": -1, "filename": "drf_jwt_knox-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6ffab4c61e251fa093e969d948a8a8ec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10338, "upload_time": "2016-10-11T14:30:41", "url": "https://files.pythonhosted.org/packages/df/84/5ba3795d68ad4d89b838a88d33bee3e94563e3fbbf9b2d4bd81c79b06b92/drf_jwt_knox-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1b985d01fe0c63229ddf4f7e222b97b", "sha256": "16a8579ae95dcaeaf892af94e31816c6e8965f9ee12b4504d6026f99cffce4e2" }, "downloads": -1, "filename": "drf-jwt-knox-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b1b985d01fe0c63229ddf4f7e222b97b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10842, "upload_time": "2016-10-11T14:30:43", "url": "https://files.pythonhosted.org/packages/5f/0a/4868fd63ead7ec2c864939dbb39950af6bdcbd354a41ac8a03afeb73a2d3/drf-jwt-knox-0.1.0.tar.gz" } ] }