{ "info": { "author": "Jeff Dairiki", "author_email": "dairiki@dairiki.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Plugins", "Environment :: Web Environment", "Framework :: Trac", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2", "Topic :: Internet :: WWW/HTTP" ], "description": "===================================\nTrac-oidc \u2014 OpenID Connect for Trac\n===================================\n\n|version| |trac versions| |build status|\n\n***********\nDescription\n***********\n\nA plugin to support authentication to trac_ using the `OpenID\nConnect`_ protocol. Currently this probably only works with\nGoogle_\\\u2019s *OpenID Provider*.\n\nThis plugin was written as a partial replacement for the\nTracAuthOpenId_, since Google has (as of mid-June, 2015) `discontinued\nsupport`_ for authentication using *OpenID 2.0*.\nGoogle\u2019s extension_ for mapping *OpenID 2.0* identifiers to *OpenID\nConnect* identifiers is used, so sites which previously used\n``TracAuthOpenId`` for authentication against Google *should* be able\nto switch to using ``trac-oidc`` without losing track of user\u2019s\nsettings and permissions.\n\nThis plugin is tested with trac versions 0.11, 0.12, 1.0, and 1.1.\n\nThe distribution may be downloaded from PyPI_.\nDevelopment takes place at github_.\n\n\n.. _OpenID Connect: http://openid.net/connect/\n.. _trac: http://trac.edgewall.org/\n.. _TracAuthOpenId: https://pypi.python.org/pypi/TracAuthOpenId\n.. _google: https://developers.google.com/identity/protocols/OpenIDConnect\n.. _discontinued support: https://support.google.com/accounts/answer/6206245\n.. _extension:\n https://developers.google.com/identity/protocols/OpenID2Migration#map-identifiers\n.. _pypi: https://pypi.python.org/pypi/trac-oidc\n.. _github: http://github.com/trac-hacks/trac-oidc/.\n\n*****\nUsage\n*****\n\nObtain OAuth 2.0 Credentials\n============================\n\nYou must obtain *OAuth 2.0 credentials* from Google before you can\nuse this plugin.\n\n1. Go to the `Google Developers Console`_.\n\n.. _google developers console: https://console.developers.google.com/\n\n2. Select a project, or create a new one.\n\n3. In the sidebar on the left, expand **APIs & auth**.\n Next, click **APIs**.\n Select the **Enabled APIs** link in the API section to see a list\n of all your enabled APIs.\n\n4. *Optional, but recommended*:\n Make sure that the **Google+ API** is on the list of enabled APIs.\n If you have not enabled it, select the API from the list of APIs,\n then select the Enable API button for the API. (The Google+ API is\n used to retrieve the user\u2019s real name on initial sign in.)\n\n5. In the sidebar on the left, select **Credentials**.\n\n6. If you haven't done so already, create your project's\n OAuth 2.0 credentials by clicking **Create new Client ID**,\n and providing the information needed to create the credentials.\n\n7. The *redirect URI* used by this plugin is the base url for your trac\n followed by ``/trac_oidc/redirect``. I.e. if the top of your trac\n is at ``http://example.org/mytrac``, then the *redirect URI* will\n be ``http://example.org/mytrac/trac_oidc/redirect``. If your trac\n is available under multiple hostnames, or under both ``http:``\n and ``https:`` schemes, then you may need to configure multiple\n *redirect URI*\\s.\n\n8. When all looks copacetic, click the **Download JSON** button (on\n the **Credentials** page) to download a JSON file containing the\n required client secrets. Save this file to somewhere where trac\n can read it. By default, the plugin looks for this file under the\n name ``client_secret.json`` in the ``conf`` subdirectory of the\n trac environment, however this can be configured. (Since the file\n contains sensitive information, consider setting the file\n permissions so that not just anybody can read it.)\n\n\nInstall the Plugin\n==================\n\nThe plugin is available from PyPI_, so it may be installed,\ne.g., using pip_::\n\n pip install trac-oidc\n\n.. _pip: https://pip.pypa.io/en/stable/\n\nConfiguration\n=============\n\nIn your ``trac.ini``::\n\n [components]\n\n # You must enable the trac_oidc plugin\n trac_oidc.* = enabled\n\n # Optional: You probably want to disable the stock login module\n trac.web.auth.loginmodule = disabled\n\n [trac_oidc]\n\n # Optional: Specify the path to the client secrets JSON file.\n # The default is ``client_secret.json``. Relative paths are\n # interpreted relative to the ``conf`` subdirectory of the trac\n # environment (i.e. alongside ``trac.ini``.)\n client_secret_file = /path/to/client_secret.json\n\n [openid]\n\n # Optional: This only matters if you would like to migrate\n # users created by the TracAuthOpenId_ plugin to this one.\n # In that case, the OpenID realm must be set to the same value\n # that was used by TracAuthOpenId (where it is called the *trust root*)\n # for the identity URLs to be comparable.\n #\n # If this is set, then the OpenID realm will include just the hostname,\n # otherwise the realm will include the full base path of the trac.\n # E.g. if you trac is is ``http://example.org:8080/mytrac``, then the realm\n # will be ``http://example.org:8080/`` if ``absolute_trust_root`` is set\n # and ``http://example.org:8080/mytrac`` if ``absolute_trust_root`` is\n # not set.\n #\n # The default is ``true``.\n #\n absolute_trust_root = false\n\n*****************************\nMigration from TracAuthOpenId\n*****************************\n\nIf you used **only** Google as the authentication provider with\nTracAuthOpenId_, then you should be able to disable\n``TracAuthOpenId``, configure and enable ``trac-oidc``, and things\n*should* just work \u2014 users should keep their sessions (i.e. they will\nretain their settings and permissions.)\n\n.. note::\n\n Make sure not to change the setting of ``absolute_trust_root`` from\n whatever you were using with ``TracAuthOpenId``.\n\nIf you were using multiple authentication providers with ``TracAuthOpenId``,\nit should be possible to run both ``TracAuthOpenId`` (with Google disabled),\nand ``trac-oidc`` together. I have not tried this, however, and some tuning\nwill probably be required.\n\n*****\nTo Do\n*****\n\nPossible improvements.\n\nGeneralize to work with more providers\n======================================\n\nThough, currently, only authentication via Google\u2019s OP is supported,\nit should be straightforward to generalize the plugin to work with other\n*OpenID Connect* providers, and other authentication services based on\n*OAuth 2.0* (e.g. Twitter, Facebook.)\n\n\nIntegrate with AccountManagerPlugin\n===================================\n\nI\u2019m not sure exactly what\u2019s involved, but it would be nice if the\nAccountManagerPlugin_ could be used to administer associations between\nOIDC subject identifiers and authenticated sessions, etc.\n\n.. _AccountManagerPlugin: https://trac-hacks.org/wiki/AccountManagerPlugin\n\n*******\nAuthors\n*******\n\n`Jeff Dairiki`_\n\n.. _Jeff Dairiki: mailto:dairiki@dairiki.org\n\n.. |version| image::\n https://img.shields.io/pypi/v/trac-oidc.svg\n :target: https://pypi.python.org/pypi/trac-oidc/\n :alt: Latest Version\n.. |build status| image::\n https://travis-ci.org/trac-hacks/trac-oidc.svg?branch=master\n :target: https://travis-ci.org/trac-hacks/trac-oidc\n.. |trac versions| image::\n https://img.shields.io/badge/trac-0.11%2C%200.12%2C%201.0%2C%201.1-blue.svg\n :target: http://trac.edgewall.org/\n\n\n*******\nHistory\n*******\n\n0.1.5 (2015-07-16)\n==================\n\n- If the stock ``trac.web.auth.LoginModule`` is disabled, then handle\n requests for ``/login`` too (because no one else is going to.)\n\n0.1.4 (2015-06-24)\n==================\n\nFeatures\n~~~~~~~~\n\n- Tests now run under trac 1.1.5\n\n0.1.3 (2015-06-23)\n==================\n\nBehavioral Changes\n~~~~~~~~~~~~~~~~~~\n\n- In the \"logged in as %(user)s\" message (in the *metanav* menu),\n *user* is now always set to the *session id* (also referred to as the\n *authname*) of the logged-in user. Previously the real name of the\n user was shown instead, when it was available. This now matches the\n behavior of the stock ``LoginModule`` component.\n\nBugs Fixed\n~~~~~~~~~~\n\n- The *Logout* link should now work again. It was broken for trac >= 1.0.2.\n\nLarge Refactor\n~~~~~~~~~~~~~~\n\n- Lots of code cleanup, including splitting of logic into several\n components/classes, include:\n\n - ``AuthCookieManager``: for managing the trac authentication cookie\n\n - ``UserDatabase``: for mapping between *OpenID identities* and trac\n *authname*\\s.\n\n - ``SessionHelper``: for searching and managing authenticated sessions\n\n - ``Authenticator``: for handling the *OpenID Connect* flow\n\n0.1.2 (2015-06-20)\n==================\n\nFeatures\n~~~~~~~~\n\n- The plugin should now work with trac 0.11.\n\nBugs Fixed\n~~~~~~~~~~\n\n- [trac > 1.0.2] Fixed *Logout* link so that it works under trac >\n 1.0.2. Recent tracs use a logout form rather than a link (for CSRF\n protection.)\n\nTesting\n~~~~~~~\n\n- Added a functional test. Run tests with trac version 0.11, 0.12 and\n latest (1.0).\n\nRefactor\n~~~~~~~~\n\n- Renamed ``trac_oidc.plugin`` module to ``trac_oidc.trac_oidc``.\n Trac\u2019s default log format string includes ``\"[%(module)s]\"`` \u2014\n ``[trac_oidc]`` is much more informative than ``[plugin]``.\n\n\n0.1.1 (2015-06-18)\n==================\n\nInitial release. There is no 0.1 (I botched the upload to PyPI).", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/trac-hacks/trac-oidc", "keywords": null, "license": "Trac license (BSD-like)", "maintainer": null, "maintainer_email": null, "name": "trac-oidc", "package_url": "https://pypi.org/project/trac-oidc/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/trac-oidc/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/trac-hacks/trac-oidc" }, "release_url": "https://pypi.org/project/trac-oidc/0.1.5/", "requires_dist": null, "requires_python": null, "summary": "OpenID Connect authentication for Trac", "version": "0.1.5" }, "last_serial": 1637134, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "a1bb1760ee72791bf44a4384df2ff7ba", "sha256": "a6eb737f053f27c617b9e17a834bcba1acaa3f900666abbea52f959ba1e7031f" }, "downloads": -1, "filename": "trac_oidc-0.1.1-py2-none-any.whl", "has_sig": true, "md5_digest": "a1bb1760ee72791bf44a4384df2ff7ba", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11886, "upload_time": "2015-06-18T17:46:22", "url": "https://files.pythonhosted.org/packages/9d/07/133c3e5f97ed52a75f432fdd79c7742836f0572fa95f34fe9f98e4741c8c/trac_oidc-0.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d52ea3d6c381da3a8beb4ee70c8396b4", "sha256": "1131663c856ae15a8be649e4e1ed6003fd6c1587d14db701991ef929bb58af5c" }, "downloads": -1, "filename": "trac-oidc-0.1.1.tar.gz", "has_sig": true, "md5_digest": "d52ea3d6c381da3a8beb4ee70c8396b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9785, "upload_time": "2015-06-18T17:45:34", "url": "https://files.pythonhosted.org/packages/ba/55/0324bcc003ad5c117d6ff844018599546c292d3036900492a12a52cbfa2a/trac-oidc-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "db8a0044d3cd9ff827c7f8ab16b05c41", "sha256": "93df705f8fe9762a8e1cff026abb71ff2f6728c8e1b630160577f524b662f416" }, "downloads": -1, "filename": "trac_oidc-0.1.2-py2-none-any.whl", "has_sig": true, "md5_digest": "db8a0044d3cd9ff827c7f8ab16b05c41", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13186, "upload_time": "2015-06-21T04:15:49", "url": "https://files.pythonhosted.org/packages/03/27/445841657947ba435116cb0260970f9ad2dde97e7843bf56c4537346217f/trac_oidc-0.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8591a146d4b5b48e0540f01e105e157", "sha256": "bd0295317882f6780b891b0f04e0fa503961da9724fdd0f962fe993efd1f0179" }, "downloads": -1, "filename": "trac-oidc-0.1.2.tar.gz", "has_sig": true, "md5_digest": "f8591a146d4b5b48e0540f01e105e157", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10714, "upload_time": "2015-06-21T04:15:28", "url": "https://files.pythonhosted.org/packages/9f/91/42e04000224e49fc8703217c493a371592dcdf895f070ba72505d2799d2e/trac-oidc-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9507fd4455b836da2eb67338f8d333de", "sha256": "0ac027a7bfdfb17aae55807e6c90b4634abaab9a3fbd22804b2331ceb1090248" }, "downloads": -1, "filename": "trac_oidc-0.1.3-py2-none-any.whl", "has_sig": true, "md5_digest": "9507fd4455b836da2eb67338f8d333de", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 18191, "upload_time": "2015-06-24T01:13:55", "url": "https://files.pythonhosted.org/packages/1a/18/7e8837b808881e1cc5e828e58a5464572c3b49e5ed329eb6f992c585a185/trac_oidc-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90625b070b6b954744466ca7148eb459", "sha256": "e58ff00896a9cc847ef609edd12842102a2d35ddf1a0dc0e4b75ef79b5c96b32" }, "downloads": -1, "filename": "trac-oidc-0.1.3.tar.gz", "has_sig": true, "md5_digest": "90625b070b6b954744466ca7148eb459", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13846, "upload_time": "2015-06-24T01:13:36", "url": "https://files.pythonhosted.org/packages/9f/86/4e029e097546e0720025fa02dd6b120e30f0573d55f11af00fd0ecb640ce/trac-oidc-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "2e41bfb36321c62e4433b6e90e547ec2", "sha256": "6c217784372f08924be74764c026bb95fa6f41472aee0a66dce832e60f90428c" }, "downloads": -1, "filename": "trac_oidc-0.1.4-py2-none-any.whl", "has_sig": true, "md5_digest": "2e41bfb36321c62e4433b6e90e547ec2", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 18473, "upload_time": "2015-06-24T14:59:48", "url": "https://files.pythonhosted.org/packages/61/c7/d98fa57b275ff8c11e1eded4bdd991bab1b3b38b76a49f78bcc13e9721c7/trac_oidc-0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b1c9ca27700fef632738025772ba016", "sha256": "4c14f2a6c4d092ef5a1225bf19c8eb57beb476fce57dc61731d94f7bbbcc36d9" }, "downloads": -1, "filename": "trac-oidc-0.1.4.tar.gz", "has_sig": true, "md5_digest": "2b1c9ca27700fef632738025772ba016", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14080, "upload_time": "2015-06-24T14:59:42", "url": "https://files.pythonhosted.org/packages/1f/29/7d328e3ca1070b006bc292cb4a12bab018bc7ec43156b6e430fbd88fa409/trac-oidc-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "94fdbab41199ce86f51145dae5041bed", "sha256": "1d44e308020a6eaefd2938b2512825623d8af41790700fd9554ab15dad7e52e9" }, "downloads": -1, "filename": "trac_oidc-0.1.5-py2-none-any.whl", "has_sig": true, "md5_digest": "94fdbab41199ce86f51145dae5041bed", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 29279, "upload_time": "2015-07-16T23:23:16", "url": "https://files.pythonhosted.org/packages/08/f8/91b7c241e3ebc5a7e20f16fc8e6f6dd01aeb9fccabb640982d7ed79a667c/trac_oidc-0.1.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab305342b107ab321810f318a11948da", "sha256": "ecc45ab51e6dfba2aa92f75ba336b61a9ef25b828953050a362e1bed14239e65" }, "downloads": -1, "filename": "trac-oidc-0.1.5.tar.gz", "has_sig": true, "md5_digest": "ab305342b107ab321810f318a11948da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22532, "upload_time": "2015-07-16T23:23:12", "url": "https://files.pythonhosted.org/packages/99/15/00768c874eb18fd0ef80ebf639e1c70b243743226063eb79da34941bbd5c/trac-oidc-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "94fdbab41199ce86f51145dae5041bed", "sha256": "1d44e308020a6eaefd2938b2512825623d8af41790700fd9554ab15dad7e52e9" }, "downloads": -1, "filename": "trac_oidc-0.1.5-py2-none-any.whl", "has_sig": true, "md5_digest": "94fdbab41199ce86f51145dae5041bed", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 29279, "upload_time": "2015-07-16T23:23:16", "url": "https://files.pythonhosted.org/packages/08/f8/91b7c241e3ebc5a7e20f16fc8e6f6dd01aeb9fccabb640982d7ed79a667c/trac_oidc-0.1.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab305342b107ab321810f318a11948da", "sha256": "ecc45ab51e6dfba2aa92f75ba336b61a9ef25b828953050a362e1bed14239e65" }, "downloads": -1, "filename": "trac-oidc-0.1.5.tar.gz", "has_sig": true, "md5_digest": "ab305342b107ab321810f318a11948da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22532, "upload_time": "2015-07-16T23:23:12", "url": "https://files.pythonhosted.org/packages/99/15/00768c874eb18fd0ef80ebf639e1c70b243743226063eb79da34941bbd5c/trac-oidc-0.1.5.tar.gz" } ] }