Python SDK for AuthGate — OAuth 2.0 authentication and token management.
pip install go-authgateWith framework support:
pip install go-authgate[fastapi]
pip install go-authgate[flask]
pip install go-authgate[django]from authgate import authenticate
client, token = authenticate(
"https://auth.example.com",
"my-client-id",
scopes=["profile", "email"],
)
print(f"Access token: {token.access_token}")from authgate import async_authenticate
client, token = await async_authenticate(
"https://auth.example.com",
"my-client-id",
scopes=["profile", "email"],
)from authgate.discovery.client import DiscoveryClient
from authgate.oauth import OAuthClient
from authgate.clientcreds import TokenSource, BearerAuth
import httpx
disco = DiscoveryClient("https://auth.example.com")
meta = disco.fetch()
client = OAuthClient("my-service", meta.to_endpoints(), client_secret="secret")
ts = TokenSource(client, scopes=["api"])
# Auto-attaches Bearer token to every request
with httpx.Client(auth=BearerAuth(ts)) as http:
resp = http.get("https://api.example.com/data")from fastapi import FastAPI, Depends
from authgate.middleware.fastapi import BearerAuth
from authgate.middleware.models import TokenInfo
app = FastAPI()
auth = BearerAuth(oauth_client)
@app.get("/protected")
async def protected(info: TokenInfo = Depends(auth)):
return {"user": info.user_id}from flask import Flask
from authgate.middleware.flask import bearer_auth, get_token_info
app = Flask(__name__)
@app.route("/protected")
@bearer_auth(oauth_client)
def protected():
info = get_token_info()
return {"user": info.user_id}Ready-to-run examples are in the examples/ directory:
| File | Description |
|---|---|
01_user_login.py |
Interactive user login — auto-selects browser or device code flow |
02_client_credentials.py |
M2M service authentication with auto-cached tokens |
03_fastapi_server.py |
FastAPI server with Bearer token validation and scope enforcement |
04_async_login.py |
Async user login via device code flow |
Set the required environment variables, then run with uv:
export AUTHGATE_URL="https://auth.example.com"
export AUTHGATE_CLIENT_ID="my-app"
uv run python examples/01_user_login.pymake install # uv sync --all-extras
make test
make lint
make typecheckMIT