{ "info": { "author": "Bhumil Sarvaiya, Rishabh Poddar", "author_email": "sarvaiyabhumil@gmail.com, rishabh@supertokens.io", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Framework :: Django :: 2.2", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Session" ], "description": "![SuperTokens banner](https://raw.githubusercontent.com/supertokens/supertokens-logo/master/images/Artboard%20%E2%80%93%2027%402x.png)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/supertokens/supertokens-django-ref-jwt/blob/master/LICENSE)\n\n\"chat\n\n**Master**\n[![CircleCI](https://circleci.com/gh/supertokens/supertokens-django-ref-jwt.svg?style=svg)](https://circleci.com/gh/supertokens/supertokens-django-ref-jwt)\n**Dev**\n[![CircleCI](https://circleci.com/gh/supertokens/supertokens-django-ref-jwt/tree/dev.svg?style=svg)](https://circleci.com/gh/supertokens/supertokens-django-ref-jwt/tree/dev)\n\nThis library implements user session management for websites that run on **Django**. This is meant to be used with your backend code. If you do not use Django, please checkout [our website](https://supertokens.io) to find the right library for you..\n\n#### The protocol SuperTokens uses is described in detail in [this article](https://supertokens.io/blog/the-best-way-to-securely-manage-user-sessions)\n\nThe library has the following features:\n- It uses short-lived access tokens (JWT) and long-lived refresh tokens (Opaque).\n- **Protects against**: XSS, Brute force, Session fixation, JWT signing key compromise, Data theft from database, CSRF and session hijacking.\n- **Token theft detection**: SuperTokens is able to detect token theft in a robust manner. Please see the article mentioned above for details on how this works.\n- **Complete auth token management** - It only stores the hashed version of refresh tokens in the database, so even if someone (an attacker or an employee) gets access to the table containing them, they would not be able to hijack any session.\n- **Automatic JWT signing key generation** (if you don't provide one), management and **rotation** - Periodic changing of this key enables maximum security as you don't have to worry much in the event that this key is compromised. Also note that doing this change will not log any user out :grinning:\n- **Complete cookie management** - Takes care of making them secure and HttpOnly. Also removes, adds and edits them whenever needed. You do not have to worry about cookies and its security anymore!\n- **Efficient** in terms of **space complexity** - Needs to store just one row in the table per logged in user per device.\n- **Efficient** in terms of **time complexity** - Minimises the number of DB lookups (most requests do not need a database call to authenticate at all if blacklisting is false - which is the default)\n- Built-in support for **handling multiple devices per user**.\n- **Built-in synchronisation** in case you are running multiple django processes.\n- **Easy to use** (see [auth-demo](https://github.com/supertokens/auth-demo)), with well documented, modularised code and helpful error messages!\n- Using this library, you can keep a user logged in for however long you want - without worrying about any security consequences. \n\n## Index\n- [Documentation](https://github.com/supertokens/supertokens-django-ref-jwt#documentation)\n- [Making changes](https://github.com/supertokens/supertokens-django-ref-jwt#making-changes)\n- [Tests](https://github.com/supertokens/supertokens-django-ref-jwt#tests)\n- [Support, questions and bugs](https://github.com/supertokens/supertokens-django-ref-jwt#support-questions-and-bugs)\n- [Authors](https://github.com/supertokens/supertokens-django-ref-jwt#authors)\n\n## Documentation: \nComing Soon.\n\n## Making changes\nPlease see our [Contributing](https://github.com/supertokens/supertokens-django-ref-jwt/blob/master/CONTRIBUTING.md) guide\n\n## Tests\n```\nmake dev-install\nmake test\n```\nSee our [Contributing](https://github.com/supertokens/supertokens-django-ref-jwt/blob/master/CONTRIBUTING.md) guide for more information.\n\n## Support, questions and bugs\nWe are most accessible via team@supertokens.io, via the GitHub issues feature and our [Discord server](https://supertokens.io/discord). \n\nClick [here](https://github.com/supertokens/supertokens-node-mysql-ref-jwt#support-questions-and-bugs) to see more information.\n\n## Authors\nCreated with :heart: by the folks at SuperTokens. We are a startup passionate about security and solving software challenges in a way that's helpful for everyone! Please feel free to give us feedback at team@supertokens.io, until our website is ready :grinning:\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/supertokens/supertokens-django-ref-jwt", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "supertokens-jwt-ref", "package_url": "https://pypi.org/project/supertokens-jwt-ref/", "platform": "", "project_url": "https://pypi.org/project/supertokens-jwt-ref/", "project_urls": { "Homepage": "https://github.com/supertokens/supertokens-django-ref-jwt" }, "release_url": "https://pypi.org/project/supertokens-jwt-ref/1.0.0/", "requires_dist": [ "django", "djangorestframework", "pycryptodome", "pytest; extra == 'dev'", "pytest-django; extra == 'dev'", "jsonschema; extra == 'dev'", "flake8; extra == 'dev'", "autopep8; extra == 'dev'" ], "requires_python": ">=3.7", "summary": "SuperTokens session management solution", "version": "1.0.0" }, "last_serial": 5715342, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "244352cba9dfb380e958aaa916e247c2", "sha256": "9769d820991023147d5d5e39f64d23d455949b3c548c66a60bea77008af81e0d" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "244352cba9dfb380e958aaa916e247c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 15330, "upload_time": "2019-08-17T13:57:38", "url": "https://files.pythonhosted.org/packages/5c/96/bcbfb6e3648880a092bfd759143f7c666c7ae6c0f2d5abb98c401b2f7537/supertokens_jwt_ref-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8df2622d5848adf5cac91f0c6dea837a", "sha256": "482b9ad0d85a7d5cd2ffbcc1bcbf4df4e31c84a02740d1ac45fb33d5d9527d49" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8df2622d5848adf5cac91f0c6dea837a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10302, "upload_time": "2019-08-17T13:57:40", "url": "https://files.pythonhosted.org/packages/da/2f/37f90a434300b89e2dffae126e66fc3b6fced9f81889fd51ebf38e10c89c/supertokens_jwt_ref-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8b6b2932b30de0dfccdddcc69c4fed30", "sha256": "074ecca9a32d1fcd398cd6f8c92024ad127c618132b461f9ee7cdc8d2876c6d7" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8b6b2932b30de0dfccdddcc69c4fed30", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 16690, "upload_time": "2019-08-22T11:41:19", "url": "https://files.pythonhosted.org/packages/11/54/3427c3896fc8fbad0372f0d3ea824bddac3f4a6185276d0d2d6288363787/supertokens_jwt_ref-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ebe71dc5af6ff7c48147da721fb4845", "sha256": "576bab6b51d2b17819f7484203907947e25d3b9d89ed090542df2282195e320b" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.2.tar.gz", "has_sig": false, "md5_digest": "2ebe71dc5af6ff7c48147da721fb4845", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9847, "upload_time": "2019-08-22T11:41:20", "url": "https://files.pythonhosted.org/packages/ec/10/790fb2f1f390605a9671a2b0591601489dea31cb695f568a6948034283e1/supertokens_jwt_ref-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ff65cd158b6b46ee2cc3711f0bb78787", "sha256": "3ef25accc600d102c9f1f82fd104ea028c43aaa4e18fe8be5a23f2f198eaa092" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ff65cd158b6b46ee2cc3711f0bb78787", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17382, "upload_time": "2019-08-22T11:50:55", "url": "https://files.pythonhosted.org/packages/3f/8d/514e143f6404235cae36427a7c56bdc5f1a48691f0ad623f7951afc45af6/supertokens_jwt_ref-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c14e714a14a30c55adb5ee46c995e9b", "sha256": "1898daf792bd632d17d9a11930c25d1fee1051d2bcc032e1625bcad3eebb6d00" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.3.tar.gz", "has_sig": false, "md5_digest": "7c14e714a14a30c55adb5ee46c995e9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11347, "upload_time": "2019-08-22T11:50:57", "url": "https://files.pythonhosted.org/packages/e7/05/9cdeee870c889219bcbab4fed5acad358591be0b1dc2b20c2676e54b64dc/supertokens_jwt_ref-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "75b5bf4f35ca064b412c0ea938b6c6fa", "sha256": "ce5714c6cf1851cf21f51ac0c69da4b13fd1c4c1b6a769612cf97bad8f497000" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "75b5bf4f35ca064b412c0ea938b6c6fa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17399, "upload_time": "2019-08-22T11:58:57", "url": "https://files.pythonhosted.org/packages/d9/e7/f565c1ef2b9527868636334cdeb670f48ae7ae463152b91217afd7e28830/supertokens_jwt_ref-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68d391a182b84e29d0c8088801cf6a2a", "sha256": "fc6718e7eca763669c61fd5e6ce97f932b47ee5cd2581b361981b730e993ca91" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.4.tar.gz", "has_sig": false, "md5_digest": "68d391a182b84e29d0c8088801cf6a2a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 11704, "upload_time": "2019-08-22T11:58:59", "url": "https://files.pythonhosted.org/packages/a7/c7/60dab49ce534e21b75a2eec8782a025e5ed8218f22819b4e70108c3c82e4/supertokens_jwt_ref-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "115536347918563158fb7eeb6120f41d", "sha256": "c01882cc470d976d15050097d6c3fae0a3e20c91bc02acf4edb5aade22dbfa13" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "115536347918563158fb7eeb6120f41d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17391, "upload_time": "2019-08-22T12:01:58", "url": "https://files.pythonhosted.org/packages/b2/55/4c0ced3ba3130528585457fec55473bd288ee881ed99b4de83f9334b86d7/supertokens_jwt_ref-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a682fc54acd5c28d6aa68ac4ee98aac7", "sha256": "1f5e6464d1ef08d8c65b9e8657ff6e29aa22bc76081bc738bc4d6b17043e5371" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.5.tar.gz", "has_sig": false, "md5_digest": "a682fc54acd5c28d6aa68ac4ee98aac7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11549, "upload_time": "2019-08-22T12:01:59", "url": "https://files.pythonhosted.org/packages/65/9b/6fe1a897a61adc8b44ac2434fc7b4e8d817b037bf25387b85a2ac105d1cc/supertokens_jwt_ref-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "581399d5c4e82345082d27eda07d4946", "sha256": "c86bfdbe820ce6e30b50d96b9307ccf8f2097a318c02cfd31d7b300745cb6f89" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "581399d5c4e82345082d27eda07d4946", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15666, "upload_time": "2019-08-22T12:32:18", "url": "https://files.pythonhosted.org/packages/c3/33/1edc8249f093680e1787f561a9c9b6ac95826d1dd02a8153861df07325ea/supertokens_jwt_ref-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b3fc26504e5ea8ed0e187490e5d41ed", "sha256": "50cccafd58733fb70d9dba7adc9034b593e049825d21abe222f622a5fe0e53e1" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.6.tar.gz", "has_sig": false, "md5_digest": "8b3fc26504e5ea8ed0e187490e5d41ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9540, "upload_time": "2019-08-22T12:32:19", "url": "https://files.pythonhosted.org/packages/22/d5/f067bbe125d84f8cc8d0d27427b82a1a967360d3245a06ced92001ba7986/supertokens_jwt_ref-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "dd0fb13459097c67bcf001ac7e0dab13", "sha256": "f055c5d14b776f6f53800dc3e7087f14f394a59685785b9c455b974ebb49f73d" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "dd0fb13459097c67bcf001ac7e0dab13", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17412, "upload_time": "2019-08-22T12:53:03", "url": "https://files.pythonhosted.org/packages/aa/42/36892ab0b5d404a63ef38f136f9d467568947ac40c9c6f2f4493728206bd/supertokens_jwt_ref-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad3b892f013e93b80f1904c392e7c86a", "sha256": "e125225408f84ab6239de94004962af813f713d2adecf24bd28140630cb649e1" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.7.tar.gz", "has_sig": false, "md5_digest": "ad3b892f013e93b80f1904c392e7c86a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14316, "upload_time": "2019-08-22T12:53:05", "url": "https://files.pythonhosted.org/packages/da/8a/7df390dd51baab12de32c4450a74685faa90b68207f0689d77ca006f0b1b/supertokens_jwt_ref-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "004bd2a2043fc85dca7492ddd2fcda94", "sha256": "5c7b4e4860cc8c4587dcc195ba0ef73ba1281e34b3a1f8a715715d271b7a7de5" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "004bd2a2043fc85dca7492ddd2fcda94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17423, "upload_time": "2019-08-22T13:44:05", "url": "https://files.pythonhosted.org/packages/f1/4d/934b2c60ac13644cc71662a304c389cfeeb9b2e89f8ad3910c00c56f0338/supertokens_jwt_ref-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "565c612cd793cc8c3f12415e7bb0dede", "sha256": "3e907bbfd7d8f2471fc37ea51a588d082636324e2dd911aabb43ffebf783c3ea" }, "downloads": -1, "filename": "supertokens_jwt_ref-0.0.8.tar.gz", "has_sig": false, "md5_digest": "565c612cd793cc8c3f12415e7bb0dede", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13561, "upload_time": "2019-08-22T13:44:07", "url": "https://files.pythonhosted.org/packages/4e/2c/7f2bfcf501367e345591d671c88e922a4084ad93dbd5c32223f55f3cc4e6/supertokens_jwt_ref-0.0.8.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "280cde79c281955d41486a5e3fde6572", "sha256": "443b437125393245d7ad8a60136d441892669752cc6dc046df673725d463e9d2" }, "downloads": -1, "filename": "supertokens_jwt_ref-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "280cde79c281955d41486a5e3fde6572", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17422, "upload_time": "2019-08-22T13:47:51", "url": "https://files.pythonhosted.org/packages/49/7c/62a2f683da86cf8618a65c1773f8b2c4b89ce9574974e2bb1223b0fa2a22/supertokens_jwt_ref-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ce44eaaa929e3e99dfafce9d51839e7", "sha256": "3d509ad72a45fc8b536fa2bfd1a47c9f610c88eb23dc6137219e553725360ccf" }, "downloads": -1, "filename": "supertokens_jwt_ref-1.0.0.tar.gz", "has_sig": false, "md5_digest": "3ce44eaaa929e3e99dfafce9d51839e7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13563, "upload_time": "2019-08-22T13:47:53", "url": "https://files.pythonhosted.org/packages/bf/2e/cb5ede3a46f2c0754f2185fbae0d6693695313f033799a9dca8f0192d38a/supertokens_jwt_ref-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "280cde79c281955d41486a5e3fde6572", "sha256": "443b437125393245d7ad8a60136d441892669752cc6dc046df673725d463e9d2" }, "downloads": -1, "filename": "supertokens_jwt_ref-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "280cde79c281955d41486a5e3fde6572", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17422, "upload_time": "2019-08-22T13:47:51", "url": "https://files.pythonhosted.org/packages/49/7c/62a2f683da86cf8618a65c1773f8b2c4b89ce9574974e2bb1223b0fa2a22/supertokens_jwt_ref-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ce44eaaa929e3e99dfafce9d51839e7", "sha256": "3d509ad72a45fc8b536fa2bfd1a47c9f610c88eb23dc6137219e553725360ccf" }, "downloads": -1, "filename": "supertokens_jwt_ref-1.0.0.tar.gz", "has_sig": false, "md5_digest": "3ce44eaaa929e3e99dfafce9d51839e7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13563, "upload_time": "2019-08-22T13:47:53", "url": "https://files.pythonhosted.org/packages/bf/2e/cb5ede3a46f2c0754f2185fbae0d6693695313f033799a9dca8f0192d38a/supertokens_jwt_ref-1.0.0.tar.gz" } ] }