Pure python implementation of an OIDC client
Dependencies:
pip install oidc-auth-client
Use this flow when your application needs to authenticate a real user.
It will:
- Open the user’s browser
- Redirect them to your identity provider’s login page
- Wait for the user to authenticate
- Receive an authorization code
- Exchange it for an access token
Best for CLIs, desktop apps, and tools acting on behalf of a user.
from oidc_auth_client import Config, AuthorizationCode, OidcProvider
config = Config(
client_id="<your-client-id>",
oidc_provider=OidcProvider(
openid_configuration_url="<auth-provider-url>/.well-known/openid-configuration"
)
)
# Sign in with the identity provider in the opened browser!
access_token = AuthorizationCode(config=config).get_token()Use this flow when your application needs to authenticate as itself, without user interaction.
The client exchanges its own client_id and client_secret directly for an access token.
Ideal for:
- Backend services
- Server-to-server APIs
- Cron jobs
- Automated tasks
from oidc_auth_client import ClientCredentials, OidcProvider, TokenCache
from oidc_auth_client.client_credentials import ClientCredentialsConfig
config = ClientCredentialsConfig(
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
oidc_provider=OidcProvider(openid_configuration_url=OPENID_CONFIGURATION_URL),
)
access_token = ClientCredentials(config=config).get_token()To allow the user to cache the token between usages, configure with a TokenCache. Will store the token in plaintext on the users system.
from oidc_auth_client import Config, TokenCache
config = Config(
# ...
token_cache=TokenCache(),
)see some example usage in the examples folder.
Requirements:
- uv ^0.7.22
Setup:
uv syncRun tests:
uv run pytest .