Single Sign-On (OIDC & SAML)
Single Sign-On (SSO) lets your team members authenticate to TrustComponent through your own identity provider. They sign in with their company email, complete authentication at your identity provider, and arrive in TrustComponent as fully signed-in users.
TrustComponent supports both common standards: OpenID Connect (OIDC) and SAML 2.0.
Availability
Section titled “Availability”Single sign-on is available for projects and agencies alike. You find it under Governance › Single Sign-On in either of them:
| Who manages single sign-on | |
|---|---|
| Project | Admins |
| Agency | Maintainers and owners |
How many configurations you can create depends on your plan and add-ons — see Current add-ons. The page shows the limit next to New SSO Configuration; without one, it shows Not included · See options.
Choosing a protocol
Section titled “Choosing a protocol”| OpenID Connect | SAML 2.0 | |
|---|---|---|
| Recommended for | Almost everyone — Microsoft Entra ID, Okta, Google Workspace, Keycloak, Auth0 and other modern identity providers | Identity providers or company policies that require SAML, e.g. ADFS, Shibboleth or existing SAML app catalogs |
| What you enter at TrustComponent | Issuer URI, client ID and client secret | The metadata URL of your identity provider, or its metadata XML |
| Single logout | Signing out of TrustComponent ends the session at your identity provider; with back-channel logout, signing out at your identity provider ends TrustComponent sessions as well | Both directions through SAML single logout |
Both protocols lead to the same result: members sign in with their company account, their email domain must be verified, and your local TrustComponent settings such as multi-factor authentication stay in force.
You can switch the protocol at any time in the first step of the setup guide. A switch removes the identity provider settings of the previous protocol, so sign-in stops until you connect your identity provider again; linked members are linked again automatically on their next sign-in.
Setting it up
Section titled “Setting it up”Create the configuration. Open your project or agency, go to Governance › Single Sign-On and choose New SSO Configuration. Pick a label, the identity provider name your members see on the sign-in redirect, and your email domain.
Follow the setup guide. The configuration page opens with a setup guide. Choose the protocol and your identity provider, and the guide shows the exact steps, including the service provider details to copy into your identity provider. These values contain the ID of your configuration, which is why they exist only after step 1.
Connect your identity provider. Enter the client credentials (OIDC) or the metadata URL or XML (SAML). We check them immediately: an unreachable issuer or invalid metadata is rejected with an explanation, not discovered at the first sign-in.
Verify your email domain with a DNS TXT record, see Email domain verification.
Test the sign-in in a private browser window with an account of your identity provider.
The setup guide stays available on the configuration page after activation. The Service provider details panel always shows these values for your configuration.
Service provider details
Section titled “Service provider details”All values contain the ID of your configuration (<id> below) and are shown ready to copy in the dashboard.
| Value | Address |
|---|---|
| Redirect URI | https://id.trustcomponent.com/login/oauth2/code/<id> |
| Post-logout redirect URI | https://id.trustcomponent.com/logout-finish |
| Back-channel logout URI | https://id.trustcomponent.com/logout/oidc/backchannel/<id> |
| Sign-on URL (app tiles) | https://id.trustcomponent.com/signin/sso/<id> |
| Value | Address |
|---|---|
| Entity ID / Audience | https://id.trustcomponent.com/saml2/metadata/<id> |
| Assertion Consumer Service URL (HTTP-POST) | https://id.trustcomponent.com/login/saml2/sso/<id> |
| Service provider metadata | https://id.trustcomponent.com/saml2/metadata/<id> |
| Single logout URL (HTTP-Redirect and HTTP-POST) | https://id.trustcomponent.com/logout/saml2/slo/<id> |
| Sign-on URL (app tiles) | https://id.trustcomponent.com/signin/sso/<id> |
The sign-on URL starts a sign-in through your identity provider directly. Use it for app tiles in My Apps, the Okta dashboard or bookmarks.
Identity provider guides
Section titled “Identity provider guides”OpenID Connect
- In the Microsoft Entra admin center open Identity › Applications › App registrations and choose New registration. Keep Accounts in this organizational directory only.
- Under Redirect URI choose the platform Web and enter the redirect URI.
- Under Authentication add the post-logout redirect URI as a second Web redirect URI.
- Under Certificates & secrets create a client secret and copy its value right away.
- Under Token configuration add the optional ID token claims
email,given_nameandfamily_name. Every user needs a mail address in Entra. - Enter the issuer
https://login.microsoftonline.com/<tenant-id>/v2.0, the Application (client) ID and the secret at TrustComponent.
SAML 2.0
- Open Identity › Applications › Enterprise applications › New application › Create your own application and choose the non-gallery option.
- Under Single sign-on › SAML › Basic SAML Configuration enter the entity ID as Identifier, the ACS URL as Reply URL, the sign-on URL as Sign on URL and the single logout URL as Logout Url.
- Keep the default Attributes & Claims — they already contain the email address, given name and surname.
- Assign the users or groups who may sign in, then copy the App Federation Metadata Url into TrustComponent.
OpenID Connect
- In the Okta Admin Console open Applications › Create App Integration and choose OIDC - OpenID Connect with Web Application.
- Enter the redirect URI as Sign-in redirect URI and the post-logout redirect URI as Sign-out redirect URI.
- Optional: set Login initiated by to Either Okta or App and use the sign-on URL as Initiate login URI.
- Assign people or groups, then enter the issuer
https://<your-org>.okta.com, the client ID and the client secret at TrustComponent.
SAML 2.0
- Open Applications › Create App Integration and choose SAML 2.0.
- Enter the ACS URL as Single sign-on URL and the entity ID as Audience URI (SP Entity ID).
- Set Name ID format to Persistent and add the attribute statements
email → user.email,firstName → user.firstNameandlastName → user.lastName. - Optional, for single logout: enable Single Logout, enter the single logout URL, the entity ID as SP Issuer, and upload the signing certificate from our service provider metadata.
- Assign people or groups, then copy the Metadata URL from the Sign On tab into TrustComponent.
OpenID Connect
- In the Google Cloud console of your organization set the OAuth consent screen to Internal.
- Under Credentials create an OAuth client ID of type Web application and add the redirect URI under Authorized redirect URIs.
- Enter the issuer
https://accounts.google.com, the client ID and the client secret at TrustComponent.
Google offers no end-session endpoint, so signing out of TrustComponent does not end the Google session.
SAML 2.0
- In the Google Admin console open Apps › Web and mobile apps › Add app › Add custom SAML app.
- Download the IdP metadata — you paste its content into TrustComponent.
- Enter the ACS URL and the entity ID. Set Name ID format to EMAIL with Primary email.
- Map Primary email → email, First name → firstName and Last name → lastName, then turn the app on for the right organizational units.
Google supports no single logout, neither for OpenID Connect nor for SAML.
OpenID Connect
- In your realm create a client of type OpenID Connect, turn on Client authentication and keep only the Standard flow.
- Enter the redirect URI under Valid redirect URIs and the post-logout redirect URI under Valid post logout redirect URIs.
- Under Logout settings turn off Front channel logout and enter the back-channel logout URI as Backchannel logout URL.
- Enter the issuer
https://<keycloak-host>/realms/<realm>, the client ID and the secret from the Credentials tab at TrustComponent.
SAML 2.0
- Under Clients › Import client load the service provider metadata from its URL. Keycloak then knows our certificate and all endpoints, including single logout.
- Under Client scopes › <client>-dedicated add User Property mappers for
email,firstNameandlastName. - Enter the realm descriptor
https://<keycloak-host>/realms/<realm>/protocol/saml/descriptoras metadata URL at TrustComponent.
OpenID Connect requirements
Section titled “OpenID Connect requirements”Client type: confidential web application with a client secret, using the Authorization Code flow. Public clients, the Implicit flow, the Device Code flow and Resource Owner Password Credentials are not supported.
Issuer: the address under which your identity provider serves /.well-known/openid-configuration. We discover all endpoints from there and check the issuer when you save it.
| Scope | Required? | Why we use it |
|---|---|---|
openid | Yes | Mandatory for every OIDC flow. |
email | Yes | We identify and link users by their email. Sign-in is rejected without it. |
profile | Recommended | Given and family name, to pre-fill the profile on first sign-in. |
| Claim | Required? | Used for |
|---|---|---|
sub | Yes | Stable identifier for every later sign-in, even if the email changes. |
email | Yes | Linking the sign-in to a TrustComponent user, gated by the verified domains. |
given_name, family_name | Recommended | Pre-filling the profile on first sign-in. |
SAML 2.0 requirements
Section titled “SAML 2.0 requirements”Metadata: enter the metadata URL of your identity provider, or paste its metadata XML if it offers no URL. A metadata URL is reloaded every night, so certificate rollovers at your identity provider need no action; with pasted XML, paste the new metadata after a rollover. The dashboard shows the signing certificates and their expiry.
Bindings: we send the authentication request signed via HTTP-Redirect and receive the response via HTTP-POST. Responses or assertions must be signed; encrypted assertions are supported with the certificate from our service provider metadata.
Name ID: the Name ID identifies the user on every later sign-in. Prefer a persistent Name ID; an email-formatted Name ID works as well.
Attributes we read (names are matched case-insensitively):
| Value | Accepted attribute names |
|---|---|
| Email address (required) | email, mail, emailaddress, http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress, urn:oid:0.9.2342.19200300.100.1.3 — or an email-formatted Name ID |
| Given name (recommended) | firstName, givenName, given_name, http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname, urn:oid:2.5.4.42 |
| Family name (recommended) | lastName, surname, sn, family_name, http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname, urn:oid:2.5.4.4 |
Email domain verification
Section titled “Email domain verification”A TrustComponent SSO configuration only accepts sign-ins for users whose email belongs to one of its verified domains. This protects you from a misconfigured or compromised identity provider issuing identities for domains it has no authority over. The verification proves that you control the domain and therefore your identity provider may vouch for identities within it.
DNS-TXT verification. Publish a TXT record on your DNS:
- Name:
_trustcaptcha-sso-verify.<your-domain>(e.g._trustcaptcha-sso-verify.acme.com) - Value: the verification token shown next to the domain (starts with
trustcaptcha-sso-verify=...)
TrustComponent checks pending domains automatically every 10 minutes. You can also press Verify to check immediately.
Domain limit. By default each SSO configuration is limited to one domain. If you need more, reach out at mail@trustcomponent.com.
Sign-in flow and identity matching
Section titled “Sign-in flow and identity matching”When a member enters their work email on the sign-in page, TrustComponent finds the active SSO configuration for the email’s domain and sends the member to your identity provider. After the identity provider confirms the member, we map the sign-in to a TrustComponent user in one of three ways:
- Returning sign-in. A member who is already linked signs in immediately. The email domain is not checked again — the email at your identity provider may legitimately change later.
- Email match for an existing user. A TrustComponent user with the same verified email is linked automatically and signed in. The user receives an email about the new link, and the link appears in the audit log.
- First-time signup. Otherwise the member confirms their name and accepts our terms once. We send a verification email to the address; clicking it creates the account, linked to your identity provider and without a password.
Account switching. TrustComponent asks the identity provider to prompt for fresh credentials on every sign-in (prompt=login for OIDC, ForceAuthn for SAML), and passes the entered email along where the protocol allows it.
Single logout
Section titled “Single logout”Signing out works in both directions, so that a second person on the same computer does not end up in the first person’s account, and signing out at your identity provider also ends the member’s TrustComponent sessions.
| OpenID Connect | SAML 2.0 | |
|---|---|---|
| Signing out of TrustComponent | Ends the session at your identity provider through its end-session endpoint. Register the post-logout redirect URI. | Sends a signed LogoutRequest to your identity provider. Register the single logout URL (or import our metadata). |
| Signing out at your identity provider | Your identity provider calls the back-channel logout URI with a signed logout token; we end every TrustComponent session of the member. | Your identity provider sends a signed LogoutRequest to the single logout URL; we end every TrustComponent session of the member and confirm with a LogoutResponse. |
Identity providers without the respective support (e.g. Google) sign members out of TrustComponent only.
SSO and local passwords
Section titled “SSO and local passwords”A TrustComponent user can authenticate by SSO, by local password, or by both.
SSO-only users. Users created through first-time signup have no local password and sign in through SSO.
Removing the SSO connection. A user can unlink SSO in their security settings, unless it is their only sign-in method.
Multi-factor authentication. TrustComponent’s own multi-factor authentication (TOTP and passkeys) is independent of the sign-in method. If a user has it enabled, it is always required — after SSO as well as after a password, regardless of whether your identity provider already enforced MFA.
Using one configuration in several projects
Section titled “Using one configuration in several projects”A company with several projects — or with an agency and projects — needs only one SSO configuration. Share it with a join code instead of setting up your identity provider again:
- In the project or agency that owns the configuration, open Governance › Single Sign-On, open the menu of the configuration and choose New join code. Give it a short description and set how many projects or agencies may use it.
- Send the code to the admins of the others. It is valid for 7 days and works as often as you set. The full code is shown only once; afterwards the configuration lists it by its last four characters, with its uses and expiry, and you can revoke it there.
- In the other project or agency, open Governance › Single Sign-On, choose Add Existing and enter the code.
The configuration then counts towards the single sign-on limit of each of them. Everyone who manages single sign-on in one of the linked projects or agencies can manage it, and provisioning rules stay separate per project or agency. Deleting the configuration removes it everywhere.
Automatic provisioning
Section titled “Automatic provisioning”With provisioning rules, members who sign in through your identity provider join your project or agency automatically, and their roles follow the groups and attributes your identity provider sends. You no longer invite each colleague by hand, and people who leave a group lose the roles it gave them at their next sign-in.
You manage the rules under Team & Access › Single Sign-On Provisioning. A rule always belongs to one SSO configuration of your project or agency, so you create or link the configuration first. Whether provisioning is available depends on your plan and add-ons.
How a rule works
Section titled “How a rule works”Each rule has a name, an SSO configuration, a list of conditions and the roles it grants — in an agency, the agency roles and the client project roles.
- Conditions compare a claim (OIDC) or an attribute (SAML) of the sign-in with a value, for example
groups=trustcomponent-admins. A condition is met when the claim contains the value exactly — upper and lower case matter. A rule with several conditions only applies when all of them are met; a rule without conditions applies to everyone who signs in through the configuration. A rule can have up to 10 conditions. - Several rules can apply to the same person; the member then receives the roles of all of them.
- The rules are checked at every sign-in. A member who no longer meets a rule loses the roles it granted. If no rule applies any more and the member was only added by provisioning, the membership ends.
- A paused rule grants nothing; the roles it granted are removed at the next sign-in.
Joining and the member limit
Section titled “Joining and the member limit”A person who meets a rule and is not yet a member joins at the end of their sign-in — no invitation email, no extra step. The audit log records the invitation and its acceptance.
If no seat is left, the invitation stays open instead. The person sees it on their Home page, with the Accept button locked until a seat is free; you see it under Team & Access › Invitations. As soon as a seat is available, the person accepts the invitation there, or joins automatically at their next sign-in.
If your plan no longer includes provisioning, the rules are suspended. You can still pause or delete them.
Sending groups from your identity provider
Section titled “Sending groups from your identity provider”Most identity providers only send group information once you configure it. Use the claim or attribute name you choose there as the claim name in your rule.
| Identity provider | What to configure |
|---|---|
| Microsoft Entra ID | Token configuration → Add groups claim (OIDC) or Attributes & Claims → Add a group claim (SAML). Entra ID sends the object IDs of the groups, so use the object ID as the value. |
| Okta | A groups claim on your authorization server (OIDC) or a group attribute statement in the app (SAML). |
| Keycloak | A Group Membership mapper on the client, with Full group path switched off to match plain group names. |
| Google Workspace | Group membership in the attribute mapping of your SAML app. The OIDC integration of Google does not send groups. |
With OpenID Connect, add the scope your identity provider needs for the groups claim (often groups) to the Scopes of your configuration. Every other claim or attribute works as well — for example a department or a job title.
When a configuration is unlinked or deleted
Section titled “When a configuration is unlinked or deleted”If an SSO configuration is removed from your project or agency, or deleted, all roles and memberships that came only from its rules end. Members who were also added by hand stay, with the roles assigned by hand.
Deleting an SSO configuration
Section titled “Deleting an SSO configuration”Manual deletion
Section titled “Manual deletion”On the configuration page, scroll to Delete Single Sign-On, type the configuration’s label to confirm, and delete. All connections between TrustComponent users and this configuration are detached; the user accounts themselves stay. Roles and memberships that came only from provisioning rules of this configuration end, and its rules are removed. Users with a local password keep signing in as usual; users who relied exclusively on SSO recover access with the password reset flow.
Automatic deletion with the project or agency
Section titled “Automatic deletion with the project or agency”If the project or agency this configuration belongs to is deleted, the configuration enters a 7-day grace period. It still works during this period but can no longer be managed from the dashboard.
Troubleshooting
Section titled “Troubleshooting”Members are not sent to the identity provider. The email domain is not verified yet, or the configuration has no identity provider connected. The configuration page shows the status — Identity provider missing or Domain verification pending. DNS changes can take a while; press Verify to check again.
The sign-in is rejected after the identity provider. The identity provider returned an email address whose domain is not verified on this configuration, or no email at all. Check the email claim or attribute, and that the user’s address belongs to a verified domain.
A provisioning rule does not apply. Compare the claim name and value exactly — upper and lower case matter. With Microsoft Entra ID, use the group’s object ID. With OpenID Connect, check that the scope for the groups claim is in the configuration’s Scopes.
A user signs in with the wrong account. We ask the identity provider for a fresh sign-in every time. If the identity provider still reuses a session, sign out there first.
SAML stopped working after a certificate change. With a metadata URL, the new certificate is picked up overnight. With pasted metadata XML, paste the new metadata.
The identity provider is gone and nobody can sign in. Users without a password use the password reset flow with their email address to set one — see User Profile.
For anything else — verifying a domain without DNS access, more domains per configuration, restoring a configuration scheduled for deletion, or an identity provider not covered above — reach out at mail@trustcomponent.com.