{ "info": { "author": "Atlassian", "author_email": "bedwards@atlassian.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "atlassian-jwt (Python)\n======================\n\n|codebeat badge|\n\n`JSON Web Token `__ (JWT) authentication and encoding\nlibrary for Python 2 and 3. Extends\n`pyjwt `__ to include Atlassian\nConnect's custom `query string\nhash `__\n(qsh) claim.\n\nThis package is on `pypi `__\nso you can use pip to install it\n\n::\n\n pip install atlassian-jwt\n\nTenant information\n------------------\n\nThis package makes references to Atlassian Connect's `tenant information\ndata\nstructure `__.\nSpecfically the ``clientKey`` and ``sharedSecret`` fields are used when\nencoding a JWT token. Here is an example of the complete tenant\ninformation data structure as is passed to a Connect Addon with the\n``installed`` lifecycle callback.\n\n::\n\n {\n \"key\": \"installed-addon-key\",\n \"clientKey\": \"unique-client-identifier\",\n \"publicKey\": \"MIGf....ZRWzwIDAQAB\",\n \"sharedSecret\": \"a-secret-key-not-to-be-lost\",\n \"serverVersion\": \"server-version\",\n \"pluginsVersion\": \"version-of-connect\",\n \"baseUrl\": \"http://example.atlassian.net\",\n \"productType\": \"jira\",\n \"description\": \"Atlassian JIRA at https://example.atlassian.net\",\n \"serviceEntitlementNumber\": \"SEN-number\",\n \"eventType\": \"installed\"\n }\n\nWhere\n\n- *clientKey* is an identifying key for the Atlassian product instance\n that the add-on was installed into.\n- *sharedSecret* is the string that should be used to sign outgoing JWT\n tokens and validate incoming JWT tokens.\n\nAuthentication\n--------------\n\nThis package provides an abstract base class that can be subclassed to\nprovide authentication to an Atlassian Connect Addon. Here is an example\nof that use\n\n::\n\n import atlassian_jwt\n\n class MyAddon(atlassian_jwt.Authenticator):\n def __init__(self, tenant_info_store):\n super(MyAddon, self).__init__()\n self.tenant_info_store = tenant_info_store\n\n def get_shared_secret(self, client_key):\n tenant_info = self.tenant_info_store.get(client_key)\n return tenant_info['sharedSecret']\n\n my_auth = MyAddon(tenant_info_store)\n try:\n client_key = my_auth.authenticate(http_method, url, headers)\n # authentication succeeded\n except atlassian_jwt.DecodeError:\n # authentication failed\n pass\n\nEncoding\n--------\n\nAtlassian Connect Addon can make API calls back to the host application.\nThese API calls include a JWT token for authentication. This package\nprovides an ``encode_token`` function to do this work. Here is an\nexample of its use\n\n::\n\n import atlassian_jwt\n\n token = atlassian_jwt.encode_token(http_method, url, **tenant_info)\n headers = {'Authorization': 'JWT {}'.format(token)}\n\nUnderstanding JWT for Atlassian Connect\n---------------------------------------\n\n- `Understanding JWT for Atlassian\n Connect `__\n- `Understanding\n JWT `__\n- `Creating a query string\n hash `__\n\nRunning the tests\n-----------------\n\n::\n\n pip2.7 install -e . && pip2.7 install -r requirements.txt && python2.7 -m pytest\n pip3.5 install -e . && pip3.5 install -r requirements.txt && python3.5 -m pytest\n\n.. |codebeat badge| image:: https://codebeat.co/badges/aea3b0ad-32b1-403e-a8e9-543ecd7dd778\n :target: https://codebeat.co/projects/bitbucket-org-atlassian-atlassian-jwt-py/ratings\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/atlassian/atlassian-jwt-py", "keywords": "jwt", "license": "", "maintainer": "", "maintainer_email": "", "name": "atlassian-jwt", "package_url": "https://pypi.org/project/atlassian-jwt/", "platform": "", "project_url": "https://pypi.org/project/atlassian-jwt/", "project_urls": { "Homepage": "https://bitbucket.org/atlassian/atlassian-jwt-py" }, "release_url": "https://pypi.org/project/atlassian-jwt/1.8.1/", "requires_dist": null, "requires_python": "", "summary": "JSON web token: pyjwt plus Atlassian query-string-hash claim", "version": "1.8.1" }, "last_serial": 2944539, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "06dcfa76e3fd281d8be674ef06c48bc3", "sha256": "c3779396eadea76d99dfc45606ec602592d0bb60b785412c08fbce6ae4071ca8" }, "downloads": -1, "filename": "atlassian-jwt-1.0.tar.gz", "has_sig": false, "md5_digest": "06dcfa76e3fd281d8be674ef06c48bc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3869, "upload_time": "2016-06-30T17:05:11", "url": "https://files.pythonhosted.org/packages/88/64/b4d0ec6d09612df5a29c2f69c4d5688dd1f8987aaba29a2f9f37f29b9bea/atlassian-jwt-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "99e721adf90cafad0d3498e7f29bbe73", "sha256": "1bbd4094b8458ab52a27b9795855f36c9771a6d8074dcb0e1eca5fec515a78a4" }, "downloads": -1, "filename": "atlassian-jwt-1.1.tar.gz", "has_sig": false, "md5_digest": "99e721adf90cafad0d3498e7f29bbe73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3909, "upload_time": "2016-06-30T18:12:42", "url": "https://files.pythonhosted.org/packages/89/56/814cb91771da2b546486f140af4076a720601c8cf96e262514b58051705e/atlassian-jwt-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "fdd9eefae294623ad4e8b73996410f5e", "sha256": "b3a69105ef248dd8580e52766cf18d3160fcbb4a53a37099c2ba153503c9dc5b" }, "downloads": -1, "filename": "atlassian-jwt-1.2.tar.gz", "has_sig": false, "md5_digest": "fdd9eefae294623ad4e8b73996410f5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3911, "upload_time": "2016-06-30T18:21:49", "url": "https://files.pythonhosted.org/packages/cd/ed/61c7e3b3a747811764b0ad2c87508e84d812e70d5350db0634f0e2c4b156/atlassian-jwt-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "fbd444194b2baf3d6d3e256b53d0051a", "sha256": "c14be7ed09d5176864c03864706394a294e16df8ac5ad5487c00071caee9a18d" }, "downloads": -1, "filename": "atlassian-jwt-1.3.tar.gz", "has_sig": false, "md5_digest": "fbd444194b2baf3d6d3e256b53d0051a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4901, "upload_time": "2016-06-30T18:26:17", "url": "https://files.pythonhosted.org/packages/5b/c4/d450ee60e875ef7ccf8f2421e3e8a66f3db0c075c151fe1f4bf02672aad6/atlassian-jwt-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "e423d43461c86c6ebb53093655386e37", "sha256": "dd25a585325e2c8ed58c7bf0a42471cd81fdd1223276a8b74e6682de0d495441" }, "downloads": -1, "filename": "atlassian-jwt-1.4.tar.gz", "has_sig": false, "md5_digest": "e423d43461c86c6ebb53093655386e37", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4908, "upload_time": "2016-06-30T18:39:50", "url": "https://files.pythonhosted.org/packages/9a/21/6c8c5f26e6c9d3ffc76f26e3b29d78a361e6bc05b9be7622deb2bf0c87ce/atlassian-jwt-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "f9d314c721d45bc509506e3cfd8af786", "sha256": "633e28a601cfa9cb7a0276da9b01064ba7bcec483c66879027b66a6d924e5b05" }, "downloads": -1, "filename": "atlassian-jwt-1.5.tar.gz", "has_sig": false, "md5_digest": "f9d314c721d45bc509506e3cfd8af786", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5389, "upload_time": "2016-08-18T00:27:01", "url": "https://files.pythonhosted.org/packages/af/e1/2cf84d66c6a877ff15cc05d2cdb1e3b143f6a42df650797adf2efa01798c/atlassian-jwt-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "bdec2a759dc1bc4000b4a827ac909fa7", "sha256": "5acb359c94d5937b437182e3709df4fa31375a6be7323598b68147227f69fbe9" }, "downloads": -1, "filename": "atlassian-jwt-1.6.tar.gz", "has_sig": false, "md5_digest": "bdec2a759dc1bc4000b4a827ac909fa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5393, "upload_time": "2016-12-06T02:19:19", "url": "https://files.pythonhosted.org/packages/30/c3/c3881054f415add305fedb4855b97c8f503dc8bbad3aa5d586d99bbf4d72/atlassian-jwt-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "a4bb050317fcb9deb6cfc13ddff7d62b", "sha256": "061435577e38994f91a511d329588e266bf08ae56292f01de36a767d5ae21974" }, "downloads": -1, "filename": "atlassian-jwt-1.7.tar.gz", "has_sig": false, "md5_digest": "a4bb050317fcb9deb6cfc13ddff7d62b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5432, "upload_time": "2017-04-12T14:32:05", "url": "https://files.pythonhosted.org/packages/24/b6/5e96431b5e2e76e2b44ff5d62cd79bae47a34575591f2b8c0786d8f50285/atlassian-jwt-1.7.tar.gz" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "9ff0c3ba242aeb155ccc2f819255ebdb", "sha256": "11758098f950b49db562477714849a8b462a94737bbae5dbf6cbbaa301912c6d" }, "downloads": -1, "filename": "atlassian-jwt-1.8.tar.gz", "has_sig": false, "md5_digest": "9ff0c3ba242aeb155ccc2f819255ebdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5431, "upload_time": "2017-04-26T18:20:01", "url": "https://files.pythonhosted.org/packages/d8/ed/620d269e81c0761f89d4ecb2c2b4f21c4787ce4ae8dff7089120e286b590/atlassian-jwt-1.8.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "0553fb36da0b5a0445e4ea47755d9f84", "sha256": "9c12e1863ca38d4ed623f903bc24a4d855be708c455d0a4228cc4e931d8ebdd4" }, "downloads": -1, "filename": "atlassian-jwt-1.8.1.tar.gz", "has_sig": false, "md5_digest": "0553fb36da0b5a0445e4ea47755d9f84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6184, "upload_time": "2017-06-07T14:47:37", "url": "https://files.pythonhosted.org/packages/68/34/62e51f583dbfa1b509f289acfa8400da77188e96e919d2618e6a557b221c/atlassian-jwt-1.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0553fb36da0b5a0445e4ea47755d9f84", "sha256": "9c12e1863ca38d4ed623f903bc24a4d855be708c455d0a4228cc4e931d8ebdd4" }, "downloads": -1, "filename": "atlassian-jwt-1.8.1.tar.gz", "has_sig": false, "md5_digest": "0553fb36da0b5a0445e4ea47755d9f84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6184, "upload_time": "2017-06-07T14:47:37", "url": "https://files.pythonhosted.org/packages/68/34/62e51f583dbfa1b509f289acfa8400da77188e96e919d2618e6a557b221c/atlassian-jwt-1.8.1.tar.gz" } ] }