Nothing Special   »   [go: up one dir, main page]

Skip to content

Python plugin to enable SSO to most common providers (such as Facebook login, Google login and login via Microsoft Office 365 Account)

License

Notifications You must be signed in to change notification settings

ccrvlh/litestar-sso

 
 

Repository files navigation

FastAPI SSO

Supported Python Versions Test coverage Tests Workflow Status Lint Workflow Status Mypy Workflow Status Black Workflow Status CodeQL Workflow Status PyPi weekly downloads Project License PyPi Version

Important

This is a fork of the FastAPI SSO library, originally designed by tomasvotava. The only modification is that this was adapted to work with Litestar, and PR #189 was merged into this fork. Currently, this is best suited as building block, rather than a standalone library.

FastAPI plugin to enable SSO to most common providers (such as Facebook login, Google login and login via Microsoft Office 365 account).

This allows you to implement the famous Login with Google/Facebook/Microsoft buttons functionality on your backend very easily.

Documentation: https://tomasvotava.github.io/fastapi-sso/

Source Code: https://github.com/tomasvotava/fastapi-sso

Example:

import os
from litestar import Litestar, Request, get
from litestar_sso.sso.google import GoogleSSO

CLIENT_ID = os.environ["CLIENT_ID"]
CLIENT_SECRET = os.environ["CLIENT_SECRET"]

app = Litestar()

sso = GoogleSSO(
    client_id=CLIENT_ID,
    client_secret=CLIENT_SECRET,
    redirect_uri="http://localhost:5000/auth/callback",
    allow_insecure_http=True,
)


@get("/auth/login")
async def auth_init():
    """Initialize auth and redirect"""
    async with sso:
        return await sso.get_login_redirect(params={"prompt": "consent", "access_type": "offline"})


@get("/auth/callback")
async def auth_callback(request: Request):
    """Verify login"""
    async with sso:
        user = await sso.verify_and_process(request)
    return user

Demo site

An awesome demo site was created and is maintained by even awesomer Chris Karvouniaris (@chrisK824). Chris has also posted multiple Medium articles about FastAPI and FastAPI SSO.

Be sure to see his tutorials, follow him and show him some appreciation!

Please see his announcement with all the links.

Quick links for the eager ones:

Security warning

Please note that versions preceding 0.7.0 had a security vulnerability. The SSO instance could share state between requests, which could lead to security issues. Please update to 0.7.0 or newer.

Also, the preferred way of using the SSO instances is to use with statement, which will ensure the state is cleared. See example below.

Support this project

If you'd like to support this project, consider buying me a coffee ☕. I tend to process Pull Requests faster when properly caffeinated 😉.

Buy Me A Coffee

Supported login providers

Official

  • Google
  • Microsoft
  • Facebook
  • Spotify
  • Fitbit
  • Github (credits to Brandl for hint using accept header)
  • generic (see docs)
  • Notion
  • Twitter (X)

Contributed

See Contributing for a guide on how to contribute your own login provider.

Installation

Install using pip

pip install fastapi-sso

Install using poetry

poetry add fastapi-sso

Contributing

If you'd like to contribute and add your specific login provider, please see Contributing file.

About

Python plugin to enable SSO to most common providers (such as Facebook login, Google login and login via Microsoft Office 365 Account)

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.8%
  • Shell 0.2%