OneLogin¶
Backend class¶
For Django, add this class path to AUTHENTICATION_BACKENDS. For other
integrations, use the same class path in the framework-specific backend
setting.
Backend name |
Class path |
|---|---|
|
|
The OneLogin backend uses OpenID Connect authorization code flow with S256 PKCE enabled by default.
Configuration¶
Create an OpenID Connect application in OneLogin and enable the authorization
code grant. Register your application’s callback URL, typically
https://your-domain.com/complete/onelogin/, in Redirect URIs.
On the SSO tab, set the Token Endpoint Authentication Method to
POST. Copy the Client ID, Client Secret, and Issuer URL and
configure:
SOCIAL_AUTH_ONELOGIN_OIDC_ENDPOINT = 'https://example.onelogin.com/oidc/2'
SOCIAL_AUTH_ONELOGIN_KEY = '<client_id>'
SOCIAL_AUTH_ONELOGIN_SECRET = '<client_secret>'
Use your tenant’s issuer URL as the endpoint, without
/.well-known/openid-configuration. Trailing slashes are normalized. The
backend discovers the authorization, token, user-info, signing-key, and issuer
configuration from:
<SOCIAL_AUTH_ONELOGIN_OIDC_ENDPOINT>/.well-known/openid-configuration
Client credentials are sent in the token request body using
client_secret_post. This matches OneLogin’s POST authentication method.
The token request uses HTTP POST; the authentication method controls where
credentials are sent, rather than changing the HTTP method.
PKCE¶
OneLogin advertises support for S256 in its provider configuration. The backend sends an S256 challenge in the authorization request and the matching verifier when exchanging the authorization code. Client-secret authentication is retained; configure the OneLogin application for POST, rather than the separate None (PKCE) mode for public clients.
For a deployment that requires disabling PKCE, configure:
SOCIAL_AUTH_ONELOGIN_USE_PKCE = False
Disabling PKCE removes the verifier binding between the authorization request and token exchange. Keep it enabled when supported by your application.
User details¶
The default scopes are openid, profile and email. Accounts are bound
to the stable sub claim. Profile fields use the shared OIDC (OpenID Connect) defaults,
including preferred_username, name, given_name, family_name and
email. Additional scopes can be requested with:
SOCIAL_AUTH_ONELOGIN_SCOPE = ['groups']
For group extraction and restrictions, see External groups.
Existing integrations¶
This backend uses the name onelogin for callbacks, settings, and stored
account associations. An existing integration using the generic oidc
backend or a custom subclass has a different backend namespace. Switching
classes does not migrate existing associations. Plan and validate an explicit
association migration, including conflicts, before switching an existing
deployment; do not automatically relink accounts by email.