Skip to main content

Basic, Digest and Bearer token authentication for Sanic routes

Project description

Sanic-HTTPAuth

Build Status

This a fork of Flask-HTTPAuth for Sanic. It is a simple extension that provides Basic and Digest HTTP authentication for Sanic routes.

Still a work in progress, contributions are welcome.

Installation

The easiest way to install this is through pip.

pip install Sanic-HTTPAuth

Basic authentication example

import hashlib
from sanic import Sanic, response
from sanic_httpauth import HTTPBasicAuth

app = Sanic(__name__)
auth = HTTPBasicAuth()


def hash_password(salt, password):
    salted = password + salt
    return hashlib.sha512(salted.encode("utf8")).hexdigest()


app_salt = "APP_SECRET - don't do this in production"
users = {
    "john": hash_password(app_salt, "hello"),
    "susan": hash_password(app_salt, "bye"),
}


@auth.verify_password
def verify_password(username, password):
    if username in users:
        return users.get(username) == hash_password(app_salt, password)
    return False


@app.route("/")
@auth.login_required
def index(request):
    return response.text(f"Hello, {auth.username(request)}!")


if __name__ == "__main__":
    app.run()

Note: See the Flask-HTTPAuth documentation for more complex examples that involve password hashing and custom verification callbacks.

Digest authentication example

from sanic import Sanic, response
from sanic_httpauth import HTTPDigestAuth
from sanic_session import Session

app = Sanic(__name__)
app.config["SECRET_KEY"] = "secret key here"
auth = HTTPDigestAuth()
Session(app)

users = {"john": "hello", "susan": "bye"}


@auth.get_password
def get_pw(username):
    if username in users:
        return users.get(username)
    return None


@app.route("/")
@auth.login_required
def index(request):
    return response.text(f"Hello, {auth.username(request)}!")


if __name__ == "__main__":
    app.run()

Resources

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

Sanic-HTTPAuth-0.2.0.tar.gz (36.9 kB view details)

Uploaded Source

Built Distribution

Sanic_HTTPAuth-0.2.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file Sanic-HTTPAuth-0.2.0.tar.gz.

File metadata

  • Download URL: Sanic-HTTPAuth-0.2.0.tar.gz
  • Upload date:
  • Size: 36.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5

File hashes

Hashes for Sanic-HTTPAuth-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a4f9fb15165a470d53ba1bd42acb8b0d9f579acb1c0af2c9752d1ed38e41cb89
MD5 9ab23b4897eaff3167372d710357f2c5
BLAKE2b-256 128938a2116129df5afb926c8eb4625fd12fe66cdc1133a989397c9fd3d73e66

See more details on using hashes here.

File details

Details for the file Sanic_HTTPAuth-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: Sanic_HTTPAuth-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.5

File hashes

Hashes for Sanic_HTTPAuth-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25c7d63ac49e18d0c60baabb02c62f0036f02ec4a54fa5cff9b0582fd920d67f
MD5 c0b707ba29fcfbcca63e2532c05fda91
BLAKE2b-256 83a4f0c41404c87c03e75e5740067b551fdc6072c4581d689c6450d2c5cfa562

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