Basic, Digest and Bearer token authentication for Sanic routes
Project description
Sanic-HTTPAuth
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4f9fb15165a470d53ba1bd42acb8b0d9f579acb1c0af2c9752d1ed38e41cb89
|
|
| MD5 |
9ab23b4897eaff3167372d710357f2c5
|
|
| BLAKE2b-256 |
128938a2116129df5afb926c8eb4625fd12fe66cdc1133a989397c9fd3d73e66
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25c7d63ac49e18d0c60baabb02c62f0036f02ec4a54fa5cff9b0582fd920d67f
|
|
| MD5 |
c0b707ba29fcfbcca63e2532c05fda91
|
|
| BLAKE2b-256 |
83a4f0c41404c87c03e75e5740067b551fdc6072c4581d689c6450d2c5cfa562
|