Skip to main content

A simple library for parsing and verifying externally issued OIDC ID tokens in fastapi.

Project description

FastAPI OIDC

Test Documentation Status Package version


:warning: See this issue for simple role-your-own example of checking OIDC tokens.

Verify and decrypt 3rd party OIDC ID tokens to protect your fastapi endpoints.

Documentation: ReadTheDocs

Source code: Github

Installation

pip install fastapi-oidc

Usage

Verify ID Tokens Issued by Third Party

This is great if you just want to use something like Okta or google to handle your auth. All you need to do is verify the token and then you can extract user ID info from it.

from fastapi import Depends
from fastapi import FastAPI

# Set up our OIDC
from fastapi_oidc import IDToken
from fastapi_oidc import get_auth

OIDC_config = {
    "client_id": "0oa1e3pv9opbyq2Gm4x7",
    # Audience can be omitted in which case the aud value defaults to client_id
    "audience": "https://yourapi.url.com/api",
    "base_authorization_server_uri": "https://dev-126594.okta.com",
    "issuer": "dev-126594.okta.com",
    "signature_cache_ttl": 3600,
}

authenticate_user: Callable = get_auth(**OIDC_config)

app = FastAPI()

@app.get("/protected")
def protected(id_token: IDToken = Depends(authenticate_user)):
    return {"Hello": "World", "user_email": id_token.email}

Using your own tokens

The IDToken class will accept any number of extra field but if you want to craft your own token class and validation that's accounted for too.

class CustomIDToken(fastapi_oidc.IDToken):
    custom_field: str
    custom_default: float = 3.14


authenticate_user: Callable = get_auth(**OIDC_config, token_type=CustomIDToken)

app = FastAPI()


@app.get("/protected")
def protected(id_token: CustomIDToken = Depends(authenticate_user)):
    return {"Hello": "World", "user_email": id_token.custom_default}

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_oidc-0.0.11.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

fastapi_oidc-0.0.11-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_oidc-0.0.11.tar.gz.

File metadata

  • Download URL: fastapi_oidc-0.0.11.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.8.4 Darwin/23.6.0

File hashes

Hashes for fastapi_oidc-0.0.11.tar.gz
Algorithm Hash digest
SHA256 fff4d8248ea10fb202fba972b043f506f75d02bbc94130dd17598258cafef4d4
MD5 cd8b0ce04cacaae9fc944528cb904c4b
BLAKE2b-256 7b394fbaea61204902bc26b79014a5e31a5c3bd0334a830d08069390fe950869

See more details on using hashes here.

File details

Details for the file fastapi_oidc-0.0.11-py3-none-any.whl.

File metadata

  • Download URL: fastapi_oidc-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.8.4 Darwin/23.6.0

File hashes

Hashes for fastapi_oidc-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 297b8d77a8a85bb290842d27eadd34f144903fa774de88d6033146061cc8f52a
MD5 80648889694c949763090699539ae90d
BLAKE2b-256 6bcbea243f740fcfb209640e9cc03d763328bf685c13a5787e33ef2da395fb37

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