FastAPI AuthKit
FastAPI-authkit is an extenstion to provide oauth-oidc authentication/authorization and user management for fastapi.
Features and supported OIDC providers
- Login/SignUp based on following providers:
- Github
- Zoom
- SSO (OKTA)
- Facebook (Coming soon...)
- Microsoft (Coming soon...)
- Apple (Coming soon...)
- User management (Coming soon...)
Installation
Install FastAPI AuthKit with pip
pip install fastapi_authkit
Usage/Examples
import fastapi
from fastapi_authkit import (
OAuthApp,
AuthSetting,
AuthProviders,
)
from fastapi_authkit.utils import jwt
fake_db = {}
SECRET_KEY = "This is a secret key"
class AuthLogic(AuthProviders.IAuthLogic):
header: dict[str, str] = {"alg": "HS256"}
async def login(
self, userinfo: AuthProviders.UserInfoModel
) -> AuthProviders.Token | None:
if userinfo.name in fake_db:
return AuthProviders.Token(
jwt.encode(
header=self.header,
key=SECRET_KEY,
payload=userinfo.dict(),
).decode()
)
async def singup(self, userinfo: AuthProviders.UserInfoModel) -> None:
global fake_db
fake_db[userinfo.name] = userinfo
app: fastapi.FastAPI = fastapi.FastAPI()
auth_router: fastapi.APIRouter = fastapi.APIRouter(prefix="/auth")
auth_app: OAuthApp = OAuthApp(app=app, secret_key=SECRET_KEY)
auth_vias: AuthProviders.AuthVia = AuthProviders.AuthVia(
oapp=auth_app.oauth,
vias=(
AuthSetting(
name="google",
client_id="{{client-id}}",
client_secret="{{client-secret}}",
client_kwargs=dict(scope="openid profile"),
).dict(),
AuthSetting(
name="github",
client_id="{{client-id}}",
client_secret="{{client-secret}}",
client_kwargs=dict(scope="user:email"),
).dict(),
AuthSetting(
name="zoom",
client_id="{{client-id}}",
client_secret="{{client-secret}}",
client_kwargs=dict(scope="openid profile"),
).dict(),
AuthSetting(
name="okta",
client_id="{{client-id}}",
client_secret="{{client-secret}}",
api_base_url="https://dev-ea46b3xduc1q1lb4.us.auth0.com",
client_kwargs=dict(scope="openid profile"),
).dict(),
AuthSetting(
name="twitter",
client_id="{{twitter-client-id}}",
client_secret="{{twitter-client-secret}}",
client_kwargs=dict(scope="users.read"),
).dict(),
),
)
auth_logic: AuthLogic = AuthLogic()
AuthProviders.GoogleAuthenticationMethod(
router=auth_router,
oauth_app=auth_app,
auth_vias=auth_vias,
auth_logic=auth_logic,
)
AuthProviders.ZoomAuthenticationMethod(
router=auth_router,
oauth_app=auth_app,
auth_vias=auth_vias,
auth_logic=auth_logic,
)
AuthProviders.GithubAuthenticationMethod(
router=auth_router,
oauth_app=auth_app,
auth_vias=auth_vias,
auth_logic=auth_logic,
)
AuthProviders.OktaAuthenticationMethod(
router=auth_router,
oauth_app=auth_app,
auth_vias=auth_vias,
auth_logic=auth_logic,
)
AuthProviders.TwitterAuthenticationMethod(
router=auth_router,
oauth_app=auth_app,
auth_vias=auth_vias,
auth_logic=auth_logic,
)
Authors
Contributing
Contributions are always welcome!
See contributing.md for ways to get started.
Please adhere to this project's code of conduct.
License
Support
For support, email papuridalego@gmail.com or join our Telegram Group (Ask us in email).
Feedback
If you have any feedback, please reach out to us at papuridalego@gmail.com
Release files for fastapi-authkit 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastapi-authkit-0.0.2.tar.gz | 10.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_authkit-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:21.3 kB
Release files / fastapi-authkit-0.0.2.tar.gz
| Download URL | fastapi-authkit-0.0.2.tar.gz |
|---|---|
| Size | 10.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a9e4b9187cd2c952b44e004230a14b986ca8d4236af8a085aba025f9bfca715
|
|
BLAKE2b-256 checksum How to use checksums |
942a793642df591350c7c1413b580c8aac0aecfdecb585d84f8f13ce1508396f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.2
|
Release files / fastapi_authkit-0.0.2-py3-none-any.whl
| Download URL | fastapi_authkit-0.0.2-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b19bd66021807b0d0f3935fb5dbc6969be31ae3f37565d9f2cccf138a51144b
|
|
BLAKE2b-256 checksum How to use checksums |
a332205a29d39c9aa71f94ab032b2155798e1b644051ceed4e991a2090e320fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.2
|