FastAPI extension for user authentication through signature challenges
Project description
FastAPI Wallet Authentication
fastapi-walletauth provides a simple way to authenticate users in FastAPI applications using a wallet. It currently supports Ethereum and Solana wallets/signatures.
Installation
pip install fastapi-walletauth
Usage
Adding the authentication endpoints is as simple as importing the authorization_routes
from fastapi_walletauth
:
from fastapi import FastAPI
from fastapi_walletauth import jwt_authorization_router
app = FastAPI()
app.include_router(jwt_authorization_router)
This will add the following endpoints to your application:
POST /authentication/challenge
: Returns a challenge for the user to signPOST /authentication/solve
: Returns a Bearer token if the signature is validPOST /authentication/logout
: Invalidates the current tokenPOST /authentication/refresh
: Returns a new token if the current token is valid
You can then use WalletAuthDep
to protect your endpoints:
from fastapi import FastAPI
from fastapi_walletauth import JWTWalletAuthDep, jwt_authorization_router
app = FastAPI()
app.include_router(jwt_authorization_router)
@app.get("/protected")
def protected(wa: JWTWalletAuthDep):
return wa.address
Signing the challenge
The challenge is a serialized JSON object containing the following fields:
message = {
"chain": "ETH",
"address": "0x...",
"app": "myapp",
"time": 1688819493.8691394
}
PLEASE NOTE: The app
field needs to be set to the name of your application. This is used to prevent replay attacks.
export FASTAPI_WALLETAUTH_APP=myapp
The signature format depends on the wallet type and is specified in the chain
field. This signature is then sent to the
/authentication/solve
endpoint to obtain a Bearer token.
Liability
This software is provided "as is" and "with all faults." I make no representations or warranties of any kind concerning the safety, suitability, inaccuracies, typographical errors, or other harmful components of this software. There are inherent dangers in the use of any software, especially cryptographic implementations. You are solely responsible for determining whether this software is compatible with your machine and other software installed on your computer. You are also solely responsible for the choice of a wallet and the security of your private keys. You acknowledge and agree to waive any liability claim against me from any loss or damage of any kind arising out of or in connection with your use of this software.
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
Hashes for fastapi_walletauth-1.2.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4771e53e6320eae5d1eeb56f1b530e95076fecda867ccdb9c66401ed14dc07d8 |
|
MD5 | ee4e09c5e6ebd5f73c7ccce6fea264d5 |
|
BLAKE2b-256 | 9682e3727cbe6e23d95b8900b3c3b0522b6e65c316a0e108971f429c8cc8e50c |