{ "info": { "author": "Florian Schulze", "author_email": "florian.schulze@gmx.net", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "devpi-ldap: LDAP authentication for devpi-server\n================================================\n\n.. image:: https://img.shields.io/pypi/v/devpi-ldap.svg?style=flat\n :target: https://pypi.python.org/pypi/devpi-ldap/\n :alt: Latest Version\n\nFor use with devpi-server >= 2.1.0.\n\nInstallation\n------------\n\n``devpi-ldap`` needs to be installed alongside ``devpi-server``.\n\nYou can install it with::\n\n pip install devpi-ldap\n\nFor ``devpi-server`` there is no configuration needed to activate the plugin, as it will automatically discover the plugin through calling hooks using the setuptools entry points mechanism. However, you need to pass a path with a YAML config file to ``devpi-server``, via the ``--ldap-config`` command-line option.\n\nDetails about LDAP configuration below.\n\nConfiguration\n-------------\n\nA script named ``devpi-ldap`` can be used to test your LDAP configuration.\n\nTo configure LDAP, create a yaml file with a dictionary containing another dictionary under the ``devpi-ldap`` key with the following options:\n\n``url``\n The url of the LDAP server.\n Using ``ldaps://`` enables SSL.\n No certificate validation is performed at the moment.\n\n``user_template``\n The template to generate the distinguished name for the user.\n If the structure is fixed, this is faster than specifying a ``user_search``, but ``devpi-server`` can't know whether a user exists or not.\n\n``user_search``\n If you can't or don't want to use ``user_template``, then these are the search settings for the users distinguished name.\n You can use ``username`` in the search filter.\n See specifics below.\n\n``group_search``\n The search settings for the group objects of the user.\n You can use ``username`` and ``userdn`` (the distinguished name) in the search filter.\n See specifics below.\n\n``referrals``\n Whether to follow referrals.\n This needs to be set to ``false`` in many cases when using LDAP via Active Directory on Windows.\n The default is ``true``.\n\n``reject_as_unknown``\n Report all failed authentication attempts as ``unknown`` instead of\n ``reject``. This is useful e.g. if using the provided credentials to bind\n to ldap, in which case we cannot distinguish authentication failures from\n unknown users. ``unknown`` is required to let other auth hooks attempt to\n authenticate the user.\n\n``tls``\n Parameters to the `ldap3.Tls object\n `_ for\n Transport Layer Security, used with LDAPS connections.\n\nThe ``user_search`` and ``group_search`` settings are dictionaries with the following options:\n\n``base``\n The base location from which to search.\n\n``filter``\n The search filter.\n To use replacements, put them in curly braces.\n Example: ``(&(objectClass=group)(member={userdn}))``\n\n``scope``\n The scope for the search.\n Valid values are ``base-object``, ``single-level`` and ``whole-subtree``.\n The default is ``whole-subtree``.\n\n``attribute_name``\n The name of the attribute which should be extracted from the search result.\n\n``userdn``\n The distinguished name of the user which should be used for the search operation.\n For ``user_search``, if you don't have anonymous user search or for ``group_search`` if the users can't search their own groups, then you need to set this to a user which has the necessary rights.\n\n``password``\n The password for the user in ``userdn``.\n\nThe YAML file should then look similar to this:\n\n.. code-block:: yaml\n\n ---\n devpi-ldap:\n url: ldap://example.com\n user_template: CN={username},CN=Partition1,DC=Example,DC=COM\n group_search:\n base: CN=Partition1,DC=Example,DC=COM\n filter: (&(objectClass=group)(member={userdn}))\n attribute_name: CN\n\nAn example with user search and Active Directory might look like this:\n\n.. code-block:: yaml\n\n ---\n devpi-ldap:\n url: ldap://example.com\n user_search:\n base: CN=Partition1,DC=Example,DC=COM\n filter: (&(objectClass=user)(sAMAccountName={username}))\n attribute_name: distinguishedName\n group_search:\n base: CN=Partition1,DC=Example,DC=COM\n filter: (&(objectClass=group)(member={userdn}))\n attribute_name: CN\n\n\nChangelog\n=========\n\n1.2.2 - 2018-05-28\n------------------\n\n- More ldap3 2.x fixes.\n [fschulze]\n\n\n1.2.1 - 2018-05-25\n------------------\n\n- Fix compatibility with ldap3 2.x.\n [fschulze, abrasive (James Laird-Wah)]\n\n- Stopped testing with Python 2.6, but no changes made which break compatibility.\n\n\n1.2.0 - 2016-03-25\n------------------\n\n- Add support for TLS parameters in the config.\n [jaraco (Jason R. Coombs)]\n\n- Allow invocation via ``python -m devpi-ldap`` and fix cli for Python 3.\n [jaraco]\n\n- Add exit codes to testing script when authentication fails.\n [jaraco]\n\n\n1.1.1 - 2016-01-28\n------------------\n\n- set minimum version of ldap3 library, which adds hiding of password in debug\n logging.\n [cannatag (Giovanni Cannata), rodcloutier (Rodrigue Cloutier), fschulze]\n\n- change dependency for the ldap library, which was renamed.\n [kumy]\n\n- fix issue #5: dn and distinguishedName may appear as a top level response\n attribute instead of the attributes list.\n [kainz (Bryon Roch\u00e9)]\n\n- fix issue #24: Ignore additional search result data.\n [bonzani (Patrizio Bonzani), fschulze]\n\n\n1.1.0 - 2014-11-10\n------------------\n\n- add ``reject_as_unknown`` option\n [davidszotten (David Szotten)]\n\n\n1.0.1 - 2014-10-10\n------------------\n\n- fix the plugin hook\n [fschulze]\n\n\n1.0.0 - 2014-09-22\n------------------\n\n- initial release\n [fschulze (Florian Schulze)]\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/devpi/devpi-ldap", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "devpi-ldap", "package_url": "https://pypi.org/project/devpi-ldap/", "platform": "", "project_url": "https://pypi.org/project/devpi-ldap/", "project_urls": { "Homepage": "https://github.com/devpi/devpi-ldap" }, "release_url": "https://pypi.org/project/devpi-ldap/1.2.2/", "requires_dist": null, "requires_python": "", "summary": "devpi-ldap: LDAP authentication for devpi-server", "version": "1.2.2" }, "last_serial": 3905631, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "bd9d41a3425607134298c7d77c157d56", "sha256": "f0122765b305cf10758d5d72516049caae8af0ee15badbc1460182a7c9aa4f3a" }, "downloads": -1, "filename": "devpi-ldap-1.0.0.zip", "has_sig": false, "md5_digest": "bd9d41a3425607134298c7d77c157d56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14361, "upload_time": "2014-09-22T12:39:59", "url": "https://files.pythonhosted.org/packages/a2/82/2edd620afd4b4a05d53ec179f48a15388c1845a1224425cdba5d237edc65/devpi-ldap-1.0.0.zip" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c8b7e9d9a336eecab57a9ffe3354c070", "sha256": "6d3dcf5a2f321533b58bd40dd6518d0876e3c87b4fd28203b519cf3f3aa63be4" }, "downloads": -1, "filename": "devpi-ldap-1.0.1.zip", "has_sig": false, "md5_digest": "c8b7e9d9a336eecab57a9ffe3354c070", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15154, "upload_time": "2014-10-10T15:25:43", "url": "https://files.pythonhosted.org/packages/07/23/45d86b260ee99acad89a055e0e2adb1a338541eeaac5ec4e9665644a303d/devpi-ldap-1.0.1.zip" } ], "1.0.1.dev1": [], "1.0.2.dev1": [], "1.1.0": [ { "comment_text": "", "digests": { "md5": "a442c2d5d777e2ffe28dcabc9adf99cf", "sha256": "bb217a697efccd8ace26267ca6e2d2b1808ae24f50208671f0013fd487ee35b7" }, "downloads": -1, "filename": "devpi-ldap-1.1.0.zip", "has_sig": false, "md5_digest": "a442c2d5d777e2ffe28dcabc9adf99cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15901, "upload_time": "2014-11-10T18:37:48", "url": "https://files.pythonhosted.org/packages/d9/f0/1ebfdc17a1731f2a528f6f1f43adde74a5a314bb881d036886864e63913c/devpi-ldap-1.1.0.zip" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "fd075aefd2fea1e42e329ff95bccd227", "sha256": "9657363c7febdde479a4ef602001f5c9e5221b30932a012b69387d84646bad7d" }, "downloads": -1, "filename": "devpi-ldap-1.1.1.tar.gz", "has_sig": false, "md5_digest": "fd075aefd2fea1e42e329ff95bccd227", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10912, "upload_time": "2016-01-28T19:17:35", "url": "https://files.pythonhosted.org/packages/73/ea/45a4adacd3ef4db109e3adf5f693ef117f9ecf44cfd2bd7e074ac8066c6f/devpi-ldap-1.1.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "cab66cf236d36d176966f5c3256ea471", "sha256": "7a2a092bcc3baf18190cfd0146e66e2dae4b4a8676b261a18a74a5a1ed0c85b2" }, "downloads": -1, "filename": "devpi-ldap-1.1.1.zip", "has_sig": false, "md5_digest": "cab66cf236d36d176966f5c3256ea471", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17715, "upload_time": "2016-01-28T19:17:29", "url": "https://files.pythonhosted.org/packages/b3/3d/c3326433696188659b6ecb4441b7b4b8c7b26e0cb45d8e08711d2026afeb/devpi-ldap-1.1.1.zip" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "536b55c0166ae0ebcff894e4ce7dcbaf", "sha256": "e72ea97557050b17627bb4e158fb36c032f7d2b58582b4d5bd235fac1f58dec4" }, "downloads": -1, "filename": "devpi-ldap-1.2.0.tar.gz", "has_sig": false, "md5_digest": "536b55c0166ae0ebcff894e4ce7dcbaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11557, "upload_time": "2016-03-25T10:41:09", "url": "https://files.pythonhosted.org/packages/7f/4e/5384f3571e330af59f954797bf9a5462473fbdd8c6dbb4a98011d9adddfe/devpi-ldap-1.2.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "a5e859fe95ed8f62252f64f92d88496f", "sha256": "7e65f33601366047dc2094af8422f6d26a0ebdc1fe1746b5b119cbb65df1562a" }, "downloads": -1, "filename": "devpi-ldap-1.2.0.zip", "has_sig": false, "md5_digest": "a5e859fe95ed8f62252f64f92d88496f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18929, "upload_time": "2016-03-25T10:41:00", "url": "https://files.pythonhosted.org/packages/8f/bd/b872163b5741c3cd45ff699d52f4fdc5408aef11818faa7b5a7e1c6a8131/devpi-ldap-1.2.0.zip" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "6210204506ff765550a0e16b0f55044e", "sha256": "09ac51cb26c82956ee2122f58c82654550254cca251d1ec0fe5a8c002124a616" }, "downloads": -1, "filename": "devpi_ldap-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6210204506ff765550a0e16b0f55044e", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7348, "upload_time": "2018-05-25T15:12:25", "url": "https://files.pythonhosted.org/packages/32/64/2add7cd4fb53918f3c8e6b85148c28b06688080cd1d6d0d5203efde45463/devpi_ldap-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bee0c0ee17aa29bd5823bdafc52f28ff", "sha256": "fcc55b569b8236475a6c2cf5de0d5cfa10abc183f12eeecf3dba3f9aa7267d6f" }, "downloads": -1, "filename": "devpi-ldap-1.2.1.tar.gz", "has_sig": false, "md5_digest": "bee0c0ee17aa29bd5823bdafc52f28ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13212, "upload_time": "2018-05-25T15:12:24", "url": "https://files.pythonhosted.org/packages/55/b5/da7573044274d6bd16788f67b94d7a9f278c0af5e1cc94028e822e9c1605/devpi-ldap-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "9bc4940ece0a85d2df76d88adf701338", "sha256": "54a4df65f0e08d171b64dfaa7558c8f8d99c420ac6f6a59a98ed5a0b96e5e2e3" }, "downloads": -1, "filename": "devpi_ldap-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9bc4940ece0a85d2df76d88adf701338", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7408, "upload_time": "2018-05-28T12:56:29", "url": "https://files.pythonhosted.org/packages/91/2d/6fc8038c6e62e00b3a9064e1c2acb739dce6b61c8b9491d5b484a515de7d/devpi_ldap-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "577672875fcdce0e563aaff6f105ec97", "sha256": "bc5ff9dad0a74c5bdd83a54559364f90216a08a61aff3464ff5a9a3d5d4939dc" }, "downloads": -1, "filename": "devpi-ldap-1.2.2.tar.gz", "has_sig": false, "md5_digest": "577672875fcdce0e563aaff6f105ec97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13342, "upload_time": "2018-05-28T12:56:28", "url": "https://files.pythonhosted.org/packages/c0/35/1b6dbaccfb7096b5f36baf9b60ed2f18e7b2bbaa61bc0f5e4c0abfbd8224/devpi-ldap-1.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9bc4940ece0a85d2df76d88adf701338", "sha256": "54a4df65f0e08d171b64dfaa7558c8f8d99c420ac6f6a59a98ed5a0b96e5e2e3" }, "downloads": -1, "filename": "devpi_ldap-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9bc4940ece0a85d2df76d88adf701338", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7408, "upload_time": "2018-05-28T12:56:29", "url": "https://files.pythonhosted.org/packages/91/2d/6fc8038c6e62e00b3a9064e1c2acb739dce6b61c8b9491d5b484a515de7d/devpi_ldap-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "577672875fcdce0e563aaff6f105ec97", "sha256": "bc5ff9dad0a74c5bdd83a54559364f90216a08a61aff3464ff5a9a3d5d4939dc" }, "downloads": -1, "filename": "devpi-ldap-1.2.2.tar.gz", "has_sig": false, "md5_digest": "577672875fcdce0e563aaff6f105ec97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13342, "upload_time": "2018-05-28T12:56:28", "url": "https://files.pythonhosted.org/packages/c0/35/1b6dbaccfb7096b5f36baf9b60ed2f18e7b2bbaa61bc0f5e4c0abfbd8224/devpi-ldap-1.2.2.tar.gz" } ] }