Skip to main content

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

Project description

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

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

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 Notice

Version 0.19.0 Update: OAuth state Validation Fix

A critical OAuth login CSRF vulnerability caused by missing state validation was reported by @davidbors-snyk (Snyk Security Labs) in #266 and has been resolved in version 0.19.0.

Starting with fastapi-sso==1.0.0, OAuth state will be backed by a pluggable server-side store (in-memory by default, with support for external stores such as Redis).

Version 0.16.0 Update: Race Condition Bug Fix & Context Manager Change

A race condition bug in the login flow that could, in rare cases, allow one user to assume the identity of another due to concurrent login requests was recently discovered by @parikls. This issue was reported in #186 and has been resolved in version 0.16.0.

Details of the Fix:

The bug was mitigated by introducing an async lock mechanism that ensures only one user can attempt the login process at any given time. This prevents race conditions that could lead to unintended user identity crossover.

Important Change:

To fully support this fix, users must now use the SSO instance within an async with context manager. This adjustment is necessary for proper handling of asynchronous operations.

The synchronous with context manager is now deprecated and will produce a warning. It will be removed in future versions to ensure best practices for async handling.

Impact:

This bug could potentially affect deployments with high concurrency or scenarios where multiple users initiate login requests simultaneously. To prevent potential issues and deprecation warnings, update to version 0.16.0 or later and modify your code to use the async with context.

Code Example Update:

# Before (deprecated)
with sso:
    openid = await sso.verify_and_process(request)

# After (recommended)
async with sso:
    openid = await sso.verify_and_process(request)

Thanks to both @parikls and the community for helping me identify and improve the security of fastapi-sso. If you encounter any issues or potential vulnerabilities, please report them immediately so they can be addressed.

For more details, refer to Issue #186 and PR #189.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_sso-0.20.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_sso-0.20.0-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_sso-0.20.0.tar.gz.

File metadata

  • Download URL: fastapi_sso-0.20.0.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for fastapi_sso-0.20.0.tar.gz
Algorithm Hash digest
SHA256 dc8f7be66caf85753133caa4dd13f961c86199f7f0d3ec1718b13a8435b60704
MD5 7de04ba8114a67973dfe4c709fd3f471
BLAKE2b-256 f1c040834e82a788b514175d72b8c3177f5cb745b2a005abdb48f6d9fc18fbe9

See more details on using hashes here.

File details

Details for the file fastapi_sso-0.20.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_sso-0.20.0-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.11.14 Linux/6.11.0-1018-azure

File hashes

Hashes for fastapi_sso-0.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efa0cb40f4b90945b6f14888853469738a312cb0ccf9d268ade8e2cd70fd58be
MD5 a1baa270df37674ddfc18d3d35dd1aae
BLAKE2b-256 784fa6441e290b5f0c2404c0b826fa1c6bbd948120e624b781b1ef5c381d26c2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page