Simple library for using a third party authentication service like Keycloak or Auth0 with FastAPI
Project description
FastAPI Third Party Auth
Documentation: https://fastapi-third-party-auth.readthedocs.io/
Source Code: https://github.com/aiwizo/fastapi-third-party-auth
Simple library for using a third party authentication service with FastAPI. Verifies and decrypts 3rd party OpenID Connect tokens to protect your endpoints.
Easily used with authentication services such as:
- Keycloak (open source)
- SuperTokens (open source)
- Auth0
- Okta
FastAPI's generated interactive documentation supports the grant flows:
GrantType.AUTHORIZATION_CODE
GrantType.IMPLICIT
GrantType.PASSWORD
GrantType.CLIENT_CREDENTIALS
Installation
poetry add fastapi-third-party-auth
Or, for the old-timers:
pip install fastapi-third-party-auth
Usage
See this example for how to use
docker-compose to set up authentication with fastapi-third-party-auth +
Keycloak.
Standard usage
from fastapi import Depends
from fastapi import FastAPI
from fastapi import Security
from fastapi import status
from fastapi_third_party_auth import Auth
from fastapi_third_party_auth import GrantType
from fastapi_third_party_auth import KeycloakIDToken
auth = Auth(
openid_connect_url="http://localhost:8080/auth/realms/my-realm/.well-known/openid-configuration",
issuer="http://localhost:8080/auth/realms/my-realm", # optional, verification only
client_id="my-client", # optional, verification only
scopes=["email"], # optional, verification only
grant_types=[GrantType.IMPLICIT], # optional, docs only
idtoken_model=KeycloakIDToken, # optional, verification only
)
app = FastAPI(
title="Example",
version="dev",
dependencies=[Depends(auth)],
)
@app.get("/protected")
def protected(id_token: KeycloakIDToken = Security(auth.required)):
return dict(message=f"You are {id_token.email}")
Optional: Custom token validation
The IDToken class will accept any number of extra fields but you can also validate fields in the token like this:
class MyAuthenticatedUser(IDToken):
custom_field: str
custom_default: float = 3.14
auth = Auth(
...,
idtoken_model=MyAuthenticatedUser,
)
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 fastapi-third-party-auth-0.1.2.tar.gz.
File metadata
- Download URL: fastapi-third-party-auth-0.1.2.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.9.14 Linux/5.15.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01afc17ca5c6b0a80782805aa5cfdedbae3b26db52d47e1a5d87a50e9e1ae44a
|
|
| MD5 |
3c2205504880700d194429a305442e30
|
|
| BLAKE2b-256 |
8ccbed450b4e58bd9c406e79f6b5444c990e73b2520586079cfb3f5b39304cb7
|
File details
Details for the file fastapi_third_party_auth-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fastapi_third_party_auth-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.9.14 Linux/5.15.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f8c1828615b1672c60a92dd74d1d7af4bdbe6fa8e5601da135ca9e75e987042
|
|
| MD5 |
f41067bceeb4b31831a3f9a6834946c2
|
|
| BLAKE2b-256 |
62112e374b0c6c14047281ec37dd1f9cedc98158a5e700b974e097340412d0c0
|