Skip to main content

HTTP Negotiate (GSSAPI) authentication support for Flask applications.

Project description

HTTP Negotiate (GSSAPI) authentication support for Flask applications. Secure sensitive views with transparent and secure single sign-on to authorize user access using existing access controls within your Microsoft, Samba Active Directory or FreeIPA servers.

Currently the username and ticket are not exposed to your application, however this should be possible. It also does not offer more fine-grained permission systems to user groups, only the host-based and service-based access controls implemented by your authentication server.

Installation

Install the easy way through PyPi:

$ pip install flask-gssapi

Or alternatively download and build yourself:

$ git clone https://github.com/cour4g3/flask-gssapi
$ cd flask-gssapi
$ python setup.py install

Usage

Usage is fairly simple:

from flask import Flask, render_template
from flask_gssapi import GSSAPI

app = Flask(__name__)

gssapi = GSSAPI(app)

# Here, you'll need to be authenticated
@app.route('/secret')
@gssapi.require_auth
def secret_view():
    return render_template('secret.html')

# Here, you'll need to be a specific user
@app.route('/admin')
@gssapi.require_user('admin') # or old-style @gssapi.require_user(user='admin')
def admin_view():
    return render_template('admin.html')

# Or a list of users
@app.route('/staff')
@gssapi.require_user('admin', 'michael')
def staff_view():
    return render_template('staff.html')

# You can also get the username as a keyword argument
@app.route('/another-secret')
@gssapi.require_auth
def admin_view(username=''):
    return render_template('another-secret.html', username=username)

Configuration

For security purposes your application should probably not have read access to the system’s keytab, you should create a new keytab for the application:

$ export KRB5_KTNAME=FILE:/path/to/HTTP.keytab
$ net ads keytab create
$ net ads keytab add HTTP
$ chown httpd:httpd /path/to/HTTP.keytab

The KRB5_KTNAME will point to the correct keytab to use and can be included in your startup script or service file.

The defaults should be sufficient for most purposes, but you may need to be changed under certain circumstances:

Key

Description

GSSAPI_SERVICE_NAME

The service name you want to authenticate against, by default this is HTTP which most browsers use.

GSSAPI_HOSTNAME

The hostname you want authenticate against, by default this is acquired from socket.fqdn().

Todo

  • Offer fallback to a login page or Basic authentication if no credentials are provided i.e. non-domain connected device.

  • Configuration key to protect all views by default with an equivalent no_auth decorator.

License

Licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Flask-GSSAPI-1.4.0.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

Flask_GSSAPI-1.4.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file Flask-GSSAPI-1.4.0.tar.gz.

File metadata

  • Download URL: Flask-GSSAPI-1.4.0.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8

File hashes

Hashes for Flask-GSSAPI-1.4.0.tar.gz
Algorithm Hash digest
SHA256 82ee31a45f4fc37b1d5019a4427b92ce7ce1ef846c24de30464b0a3cec9c8191
MD5 9348a894cae93007d86b91fccbbfe915
BLAKE2b-256 ef622bce299a6169000f0f8f3078f6fc5adf650358d5f3d3f67fcbf8f9abc3bc

See more details on using hashes here.

File details

Details for the file Flask_GSSAPI-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: Flask_GSSAPI-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8

File hashes

Hashes for Flask_GSSAPI-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e069a99727aa9d66463831080245555e5ffaeb8b757d51e5ffbcb6b37d46abe3
MD5 cff1e09bf505d7d20b766539b49f6faf
BLAKE2b-256 f0ec24f17a0274120fb7f2702944c5b431e21904dd085fd23ca1738d2b920d08

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page