{ "info": { "author": "Michael de Villiers", "author_email": "michael@cour4g3.me", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Flask-GSSAPI\n############\nHTTP Negotiate (GSSAPI) authentication support for Flask applications. Secure\nsensitive views with transparent and secure single sign-on to authorize user\naccess using existing access controls within your Microsoft, Samba Active\nDirectory or FreeIPA servers.\n\nCurrently the username and ticket are not exposed to your application, however\nthis should be possible. It also does not offer more fine-grained permission\nsystems to user groups, only the host-based and service-based access controls\nimplemented by your authentication server.\n\nInstallation\n============\nInstall the easy way through PyPi:\n\n.. code-block:: console\n\n $ pip install flask-gssapi\n\nOr alternatively download and build yourself:\n\n.. code-block:: console\n\n $ git clone https://github.com/cour4g3/flask-gssapi\n $ cd flask-gssapi\n $ python setup.py install\n\nUsage\n=====\nUsage is fairly simple:\n\n.. code-block:: python\n\n from flask import Flask, render_template\n from flask_gssapi import GSSAPI\n\n app = Flask(__name__)\n\n gssapi = GSSAPI(app)\n\n # Here, you'll need to be authenticated\n @app.route('/secret')\n @gssapi.require_auth\n def secret_view():\n return render_template('secret.html')\n\n # Here, you'll need to be a specific user\n @app.route('/admin')\n @gssapi.require_user('admin') # or old-style @gssapi.require_user(user='admin')\n def admin_view():\n return render_template('admin.html')\n\n # Or a list of users\n @app.route('/staff')\n @gssapi.require_user('admin', 'michael')\n def staff_view():\n return render_template('staff.html')\n\n # You can also get the username as a keyword argument\n @app.route('/another-secret')\n @gssapi.require_auth\n def admin_view(username=''):\n return render_template('another-secret.html', username=username)\n\nConfiguration\n=============\nFor security purposes your application should probably not have read access to\nthe system's keytab, you should create a new keytab for the application:\n\n.. code-block:: console\n\n $ export KRB5_KTNAME=FILE:/path/to/HTTP.keytab\n $ net ads keytab create\n $ net ads keytab add HTTP\n $ chown httpd:httpd /path/to/HTTP.keytab\n\nThe `KRB5_KTNAME` will point to the correct keytab to use and can be included\nin your startup script or service file.\n\nThe defaults should be sufficient for most purposes, but you may need to be\nchanged under certain circumstances:\n\n+-----------------------+------------------------------------------------------+\n| Key | Description |\n+=======================+======================================================+\n| `GSSAPI_SERVICE_NAME` | The service name you want to authenticate against, |\n| | by default this is `HTTP` which most browsers use. |\n+-----------------------+------------------------------------------------------+\n| `GSSAPI_HOSTNAME` | The hostname you want authenticate against, by |\n| | default this is acquired from `socket.fqdn()`. |\n+-----------------------+------------------------------------------------------+\n\nTodo\n====\n* Offer fallback to a login page or Basic authentication if no credentials are\n provided i.e. non-domain connected device.\n* Configuration key to protect all views by default with an equivalent `no_auth`\n decorator.\n\nLicense\n=======\nLicensed under the MIT License.\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/cour4g3/flask-gssapi", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Flask-GSSAPI", "package_url": "https://pypi.org/project/Flask-GSSAPI/", "platform": "any", "project_url": "https://pypi.org/project/Flask-GSSAPI/", "project_urls": { "Homepage": "https://github.com/cour4g3/flask-gssapi" }, "release_url": "https://pypi.org/project/Flask-GSSAPI/1.3.1/", "requires_dist": null, "requires_python": "", "summary": "HTTP Negotiate (GSSAPI) authentication support for Flask applications.", "version": "1.3.1" }, "last_serial": 3496709, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "cb6fa46b56d35d4574de87eabd1e70c5", "sha256": "cd52accd4b3e4febc4d534eeb6a9878cbc1f372b60b934c7441bb8464a7271f4" }, "downloads": -1, "filename": "Flask-GSSAPI-1.0.tar.gz", "has_sig": false, "md5_digest": "cb6fa46b56d35d4574de87eabd1e70c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3475, "upload_time": "2016-12-14T10:24:41", "url": "https://files.pythonhosted.org/packages/18/65/8692fc09306264cd99343ca858dcb60a50d8089cafab910f7263a17289c6/Flask-GSSAPI-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "22808635488bb5815ac44f30af1b3c44", "sha256": "3902e414b25c2e530122ac2667e736eb7e64777d3ec8128b7ec4784a91fb2ebf" }, "downloads": -1, "filename": "Flask-GSSAPI-1.1.tar.gz", "has_sig": false, "md5_digest": "22808635488bb5815ac44f30af1b3c44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3985, "upload_time": "2017-07-18T20:22:49", "url": "https://files.pythonhosted.org/packages/74/9b/0971e2e12b8143c4fc98590b4db56bdbfad957aa3ecf110fbcb7bb5490eb/Flask-GSSAPI-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "550a8847ac6dd5c2ab5a2fdbfb31b2a6", "sha256": "a749809ee1152166726cf823bda12ca06e88613860b557a736ec022ea506e60d" }, "downloads": -1, "filename": "Flask-GSSAPI-1.1.1.tar.gz", "has_sig": false, "md5_digest": "550a8847ac6dd5c2ab5a2fdbfb31b2a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3956, "upload_time": "2017-08-18T09:16:33", "url": "https://files.pythonhosted.org/packages/1b/7e/46226fa3c5eb6aa030ba861a6e4bd47719aa88a982bc59683404b49ac418/Flask-GSSAPI-1.1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "addc36ce490387b813a70789cb43e3c3", "sha256": "de2d3c672f195dddb31e8c49c071965c30e6e22fe98e9de7d592a735f95e37d4" }, "downloads": -1, "filename": "Flask-GSSAPI-1.2.tar.gz", "has_sig": false, "md5_digest": "addc36ce490387b813a70789cb43e3c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4044, "upload_time": "2017-12-12T09:10:39", "url": "https://files.pythonhosted.org/packages/8b/11/f2369701cb3a3beee5281f79fbcc33d58443ae90052cb90f8e00ae62b9c1/Flask-GSSAPI-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "e9c3609706964c47b560a4930ad2d7be", "sha256": "c09820610cdbd6f1ac3c765ff6e82b7443810605cc3788fb1d70e65bad694222" }, "downloads": -1, "filename": "Flask-GSSAPI-1.3.tar.gz", "has_sig": false, "md5_digest": "e9c3609706964c47b560a4930ad2d7be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4121, "upload_time": "2017-12-12T09:10:50", "url": "https://files.pythonhosted.org/packages/76/03/acd5548acce3fbb0a825037d071f69322459fd494f5991340827428dce0f/Flask-GSSAPI-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "0a4ce820fd43053e7ac3e7c3937e529c", "sha256": "975c75c9492d0d91c2c21101aef2b3dc6396c104513b393be67f51406088eee6" }, "downloads": -1, "filename": "Flask-GSSAPI-1.3.1.tar.gz", "has_sig": false, "md5_digest": "0a4ce820fd43053e7ac3e7c3937e529c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4136, "upload_time": "2018-01-17T10:36:34", "url": "https://files.pythonhosted.org/packages/a5/78/e70578f66cd9effb3c39ce4897bf6da2e77636a7d96419bc3d5a87582924/Flask-GSSAPI-1.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0a4ce820fd43053e7ac3e7c3937e529c", "sha256": "975c75c9492d0d91c2c21101aef2b3dc6396c104513b393be67f51406088eee6" }, "downloads": -1, "filename": "Flask-GSSAPI-1.3.1.tar.gz", "has_sig": false, "md5_digest": "0a4ce820fd43053e7ac3e7c3937e529c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4136, "upload_time": "2018-01-17T10:36:34", "url": "https://files.pythonhosted.org/packages/a5/78/e70578f66cd9effb3c39ce4897bf6da2e77636a7d96419bc3d5a87582924/Flask-GSSAPI-1.3.1.tar.gz" } ] }