SSO Configuration

Thallus supports enterprise single sign-on via OIDC and SAML. Org admins configure SSO for their organization; superadmins can configure it for any org. Each organization supports one SSO configuration.

Supported providers

IDENTITY PROVIDERS
Okta
OIDC
Microsoft Entra ID
OIDC
Google Workspace
OIDC
Auth0
OIDC
OneLogin
SAML
Generic OIDC
OIDC
Generic SAML
SAML

OIDC configuration

OIDC SETTINGS
Client ID
0oa1b2c3d4e5f6g7h8i9
Client Secret
••••••••••••••••
Issuer URL
https://acme.okta.com
Scopes
openid, profile, email
Save
Field Required Description
client_id Yes Application ID from your identity provider
client_secret Yes Encrypted at rest in the database
issuer_url Yes Provider's issuer URL — used for OIDC auto-discovery
scopes No Defaults to openid, profile, email

The issuer URL is used for auto-discovery: Thallus fetches the /.well-known/openid-configuration document to automatically determine authorization, token, and userinfo endpoints.


SAML configuration

Field Required Description
idp_entity_id Yes Identity provider's entity ID
idp_sso_url Yes SSO endpoint URL at the IdP
idp_certificate Yes X.509 certificate (PEM format) for signature validation
sp_entity_id No Thallus's entity ID (auto-generated if not set)
attribute_mapping No Map IdP attributes to user fields (email, name, etc.)

Thallus provides a SP metadata endpoint that you can import into your IdP to auto-configure the SAML trust relationship.


Behavior settings

JIT Provisioning Auto-create users on first login
Require SSO Disable password login
Setting Default Description
allow_jit_provisioning true Auto-create user accounts on first SSO login
default_role user Role assigned to JIT-provisioned users
require_sso false When true, password login is disabled for the org
allowed_domains null Restrict SSO to specific email domains

When require_sso is enabled: - Password login returns an error directing users to SSO - Password reset is blocked for users in this org - New users are created without a password hash


Microsoft 365 integration

For organizations using Microsoft Entra ID (Azure AD), Thallus can also integrate with Microsoft 365 services via the Graph API.

Field Description
m365_tenant_id Azure AD tenant ID
m365_scopes Graph API permissions for the capabilities you want to enable

The Microsoft 365 integration requests the necessary permissions for email, calendar, files, and contacts based on your configuration. Tokens are securely stored per-user and refreshed automatically when they expire.


SSO login flow

User clicks SSO
Redirect to IdP
User authenticates
Callback + validate
Provision or link
Session created
  1. Initiate — User selects SSO login. Thallus looks up the SSO config for the user's org (by email domain)
  2. Redirect — Thallus generates an authorization URL with state parameter and redirects to the IdP
  3. Authenticate — User authenticates at the IdP (password, MFA, etc.)
  4. Callback — IdP redirects back with an authorization code (OIDC) or SAML assertion. Thallus validates the response
  5. Provision/Link — If JIT provisioning is enabled and the user doesn't exist, a new account is created. Otherwise, the SSO identity is linked to the existing account
  6. Session — JWT access token and refresh token are issued. The SSO identity's last_login_at is updated

Testing configuration

Before enabling SSO for your organization, use the test endpoint to validate your configuration:

  • OIDC: Tests that the issuer URL's discovery document is reachable and contains valid endpoints
  • SAML: Validates the IdP certificate format and attribute mapping

Testing does not create user sessions — it only verifies the configuration is well-formed.


Managing SSO identities

Admins can view and manage SSO identities linked to users:

  • View — See which IdP identity is linked, last login date, and cached claims
  • Unlink — Remove the SSO identity link (user reverts to password login if available)
  • M365 tokens — View token expiry status for Microsoft 365 integrations

A user can have multiple SSO identities if their org changes providers. Old identities remain until explicitly unlinked.