Useful functions

The module django_pyoidc.utils has some useful functions :

django_pyoidc.utils.extract_claim_from_tokens(claim: str, tokens: Dict[str, Any], raise_exception: bool = True) Any

Given a dictionary of token claims, extract the given claim.

This function searches the tokens dictionary for the requested data in priority order:

  1. info_token_claims

  2. id_token_claims

  3. access_token_claims

If the claim is not found a ClaimNotFoundError exception is raised unless the parameter raise_exception has been set to false.

Views

Note

When instantiating a view from this library (ie through django’s β€˜as_view()’) you must set the named argument op_name to point to a valid DJANGO_PYOIDC settings entry. If you use Providers then this behaviour is automatically implemented.

Here is an example:

from .oidc_providers import my_project_provider

urlpatterns = [
    path("auth/callback", OIDCCallbackView.as_view(op_name="keycloak"),),
]

Providers

Providers classes allows the final user to configure their project without having to understand how to map their Identity Provider configuration settings to this library settings.

Each provider implements the configuration logic and should be used using the provider_class setting.

Tip

Read the tutorial to learn how to use provider class !

Tip

All the named arguments of __init__() can be set by configuring a setting with the same name.

Provider list

class django_pyoidc.providers.KeycloakProvider(keycloak_base_uri: str | None = None, keycloak_realm: str | None = None, *args: Any, op_name: str, **kwargs: Any)

Provide django settings/urlconf based on keycloak behaviour (latest version).

For older Keycloak versions please check the other Keycloak_* providers.

class django_pyoidc.providers.Keycloak18Provider(keycloak_base_uri: str | None = None, keycloak_realm: str | None = None, *args: Any, op_name: str, **kwargs: Any)

Provide Django settings/urlconf based on keycloak behaviour (v18)

get_default_config() ProviderConfig

Get the default configuration settings for this provider.

This configuration defaults are used to provide default values for OIDCSettings. User can override these defaults by playing with OIDCSettings arguments.

class django_pyoidc.providers.Keycloak17Provider(keycloak_base_uri: str | None = None, keycloak_realm: str | None = None, *args: Any, op_name: str, **kwargs: Any)

Provide Django settings/urlconf based on keycloak behaviour (v17)

class django_pyoidc.providers.Keycloak10Provider(keycloak_base_uri: str | None = None, keycloak_realm: str | None = None, *args: Any, op_name: str, **kwargs: Any)

Provide Django settings/urlconf based on keycloak behaviour (v10 to v18)

__init__(keycloak_base_uri: str | None = None, keycloak_realm: str | None = None, *args: Any, op_name: str, **kwargs: Any)
Parameters:

op_name (str) – the name of the sso provider that you are using

get_default_config() ProviderConfig

Get the default configuration settings for this provider.

This configuration defaults are used to provide default values for OIDCSettings. User can override these defaults by playing with OIDCSettings arguments.

class django_pyoidc.providers.LemonLDAPngProvider(*args: Any, op_name: str, **kwargs: Any)

Provide django settings/urlconf based on LemonLDAP-ng behaviour (latest version).

For older LemonLDAPNg versions please check the other Klemonldapng_* providers.

class django_pyoidc.providers.LemonLDAPng2Provider(*args: Any, op_name: str, **kwargs: Any)

Provide Django settings/urlconf based on LemonLDAP-ng behaviour (v2)

get_default_config() ProviderConfig

Get the default configuration settings for this provider.

This configuration defaults are used to provide default values for OIDCSettings. User can override these defaults by playing with OIDCSettings arguments.

This is the base Provider class that is used to implement common provider configuration patterns. You should not use this class directly. Instead, you should but subclass it to implement the configuration logic.