Support OAuth authentication for Muffin Framework.
Project description
Muffin‑OAuth
Muffin‑OAuth adds OAuth 1 and 2 support to the Muffin_ framework, enabling both client-side and server-side authentication flows.
Requirements
- Python >= 3.10
- Compatible with
asyncio,Trio, andCurio
Installation
Install via pip:
pip install muffin-oauth
Usage
Here's a basic example using OAuth2:
from muffin import Application
from muffin_oauth import OAuthPlugin
app = Application("auth-example")
oauth = OAuthPlugin()
oauth.setup(app, providers={
"github": {
"client_id": "...",
"client_secret": "...",
"authorize_url": "https://github.com/login/oauth/authorize",
"access_token_url": "https://github.com/login/oauth/access_token",
"api_base_url": "https://api.github.com"
}
})
@app.route("/")
async def login(request):
return await oauth.authorize_redirect(request, "github", redirect_uri="http://localhost:8000/callback")
@app.route("/callback")
async def callback(request):
token = await oauth.authorize_access_token(request, "github")
request.session["token"] = token
return "Logged in"
@app.route("/user")
async def user(request):
client = oauth.client("github", token=request.session.get("token"))
resp = await client.get("/user")
return resp.json()
Run the example app:
$ make example
http://localhost:5000
Client-side usage:
client = oauth.client("github", access_token="...")
resp = await client.request("GET", "/user")
user_info = resp.json()
This supports both OAuth1 and OAuth2 flows, with automatic token handling and resource access via configured providers.
Testing & Security
- Test coverage for major flows is provided in
tests.py. - Minimal dependencies and async-native design.
- Production-ready, MIT-licensed.
Bug Tracker & Contributing
Found an issue or have an idea? Report it at: https://github.com/klen/muffin-oauth/issues
Contributions welcome! Fork the repo and submit a PR.
Contributors
- klen (Kirill Klenov)
License
Licensed under the MIT license.
Project details
Release history Release notifications | RSS feed
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 muffin_oauth-2.8.1.tar.gz.
File metadata
- Download URL: muffin_oauth-2.8.1.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16fb4079541b754cb3f8f89a5ddd334993a616f74af7319e8f52c6409647a845
|
|
| MD5 |
a160e20b09a8e05a8eadd97293db7b52
|
|
| BLAKE2b-256 |
b1f6c7bd76dba88c8f978f8cededb42d9c328f4f9dbf977767398117baa10939
|
File details
Details for the file muffin_oauth-2.8.1-py3-none-any.whl.
File metadata
- Download URL: muffin_oauth-2.8.1-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da6ecc7cc08641f69e40a9168f52db50959d9688913d77971b38d1a70d5f15a2
|
|
| MD5 |
11d1188e57bf72cb40fe735d714833bb
|
|
| BLAKE2b-256 |
71e00d1213ca20b61a675f3dcf177ec396b1ad75a961a5f9862fb5065e8f8903
|