How SSO works
- Each connection covers one email domain. A connection links one domain, such as
example.com, to your IdP. Subdomains such aseu.example.comneed their own connection. - Domain verification comes first. A connection stays inactive until you publish a DNS TXT record that proves you control the domain.
- Sign-in starts in Lab. People choose Sign in with SSO on the Lab sign-in page and enter their work email. Starting from your IdP’s app dashboard is not supported.
- New people join as members. The first SSO sign-in adds the person to your team with the Member role. Owners and admins can change roles on the Team page.
- Existing accounts are linked. If someone already has an Anam account with that email, SSO signs them in to the same account and keeps their data.
- SSO is optional unless you require it. By default, people in your domain can still sign in with a password, Google or GitHub. Owners and admins can require SSO so that people in your domain sign in only through your IdP.
Before you start
You need:- An Anam organization on an Enterprise plan.
- The Owner or Admin role in that organization.
- Admin access to your IdP, to create an OIDC or SAML application.
- Access to your domain’s DNS, to add a TXT record.
Set up SSO
Open the SSO settings
Choose a protocol and enter your domain
example.com.Add Lab's settings to your IdP
- OIDC: the Redirect URI. Allow the
openid,emailandprofilescopes. - SAML: the ACS URL and Entity ID. Your IdP must sign SAML assertions.
Enter your IdP's details
- OIDC: the Issuer URL, Client ID and Client secret. Lab discovers the other endpoints from the issuer.
- SAML: the IdP metadata XML. It must include the signing certificate and an HTTPS sign-in URL with the HTTP-Redirect binding.
Verify your domain
@example.com addresses can sign in with SSO.Test sign-in
Configure your identity provider
These guides cover the IdP side of steps 3 and 4. Use the values from your Lab dialog wherever a guide refers to a Lab value.- Google Workspace (SAML)
- Microsoft Entra ID (OIDC)
- Okta (OIDC)
- Other providers
- In the Google Admin console, go to Apps > Web and mobile apps, then choose Add app > Add custom SAML app.
- Enter an app name, such as
Anam Lab. Google rejects names with special characters such as parentheses. - On Google Identity Provider details, choose Download metadata. Open the downloaded file and paste its contents into IdP metadata XML in Lab.
- On Service provider details, paste Lab’s ACS URL and Entity ID. Leave Signed response unchecked. Google signs the assertion.
- Set Name ID format to
EMAILand Name ID to Basic Information > Primary email. - Optional: on Attribute mapping, map First name to
givenNameand Last name tosurnameso new people get a display name. Without them, Lab uses the email address as the name. - Choose Finish, then open User access and turn the app ON for the organizational units or groups that should use Anam.
Require SSO
When you require SSO, people whose email address is on one of your organization’s verified domains can sign in to Lab only through your IdP. Your IdP’s policies, including multi-factor authentication (MFA), then apply to every Lab sign-in for those people. Lab doesn’t run its own MFA and doesn’t check MFA claims in your IdP’s response. To require MFA for Lab, require it for the Anam application in your IdP.Turn on the requirement
Sign in with SSO
Turn on Require SSO
Confirm the covered domains
What changes for people on your domains
For people whose email address is on a covered domain:- They can sign in only with Sign in with SSO. Password, Google and GitHub sign-in are refused, and the sign-in page moves them to Sign in with SSO with their email filled in.
- Forgot password is refused. A reset link sent before you turned on the requirement no longer works.
- They can’t change their email address or password in Lab. Nobody can change their email address to or from a covered domain.
- Their existing Lab sessions that didn’t start with SSO end the next time they’re used. This can take up to 30 seconds after you turn on the requirement.
Which domains are covered
The requirement covers the domains of your organization’s active connections. Domains match exactly: a connection forexample.com doesn’t cover eu.example.com.
If another verified connection also claims one of your domains, sign-in can’t pick a connection for that domain, so the requirement doesn’t apply there. The Team page lists these domains under Require SSO. Delete the extra connection to cover the domain.
The requirement stops applying to a domain when you delete its connection, and to all your domains if your organization leaves the Enterprise plan.
What the requirement doesn’t cover
- API keys. API keys are separate credentials and keep working. The requirement controls sign-in to Lab only.
- Existing SSO sessions. Lab sessions last seven days and extend each day they’re used. Disabling someone in your IdP doesn’t end a Lab session they already have, so also remove them from your team on the Team page.
- Calls already running. Turning on the requirement doesn’t end a call in progress.
- New people when your team is full. Once your organization reaches its member limit, someone on a covered domain who isn’t yet a member can’t sign in. SSO can’t add them, and no other sign-in method is allowed.
If your IdP stops working
If you’re locked out, an owner or admin should contact support. Support confirms the request with your account team’s contact on record, then turns the requirement off. Owners and admins can then sign in with a password using Forgot password, fix the connection and turn the requirement back on.Manage connections
Owners and admins manage connections from the menu on each connection’s card.Rotate a client secret or signing certificate
Choose Update credentials. Everyone stays linked and the domain stays verified.- OIDC: create a new client secret in your IdP, save it in Lab, then remove the old secret from your IdP.
- SAML: after your IdP publishes a new signing certificate, paste its new metadata XML. Lab shows when the current certificate expires and marks the connection Certificate expiring from 30 days before.
Move to a different IdP application
A new client ID, issuer, or SAML sign-in URL belongs to a different IdP application, so it needs a new connection:- Add a connection for the same domain with the new application, and publish its TXT record. The old connection keeps working in the meantime.
- Delete the old connection, then choose Check DNS record on the new one.
Remove someone’s access
Disabling someone in your IdP only stops new SSO sign-ins. Their current Lab session continues until it expires, up to seven days after they last used it. Unless you require SSO, they can also still sign in another way if they control the email address. When someone leaves, disable them in your IdP and remove them from your team on the Team page.Delete a connection
Choose Delete connection. People can no longer sign in through that connection, but their current sessions stay active and they keep their accounts. They can sign in with a password using Forgot password. If you required SSO, the requirement no longer applies to that connection’s domain.If your Enterprise plan ends
Connections stay saved but stop working, and the SSO requirement no longer applies. People sign in with a password instead, using Forgot password the first time. To keep SSO, talk to our sales team about renewing your Enterprise agreement.Troubleshooting
If sign-in fails after your IdP, Lab shows an error page. Its address includes an error code, such aserror=invalid_saml_response. Include the code and the time of the attempt when you contact support.
Single sign-on doesn't appear on the Team page
Single sign-on doesn't appear on the Team page
We couldn't find the TXT record on example.com yet
We couldn't find the TXT record on example.com yet
- The host isn’t duplicated, such as
_anam-domain-verification-…example.com.example.com. If your DNS provider adds the domain, enter only the part before it. - The value matches Lab exactly.
- The record is published on the same domain as the connection.
dig TXT <host>, then choose Check DNS record again.The verification value expired and has been replaced
The verification value expired and has been replaced
Single sign-on isn't set up for example.com
Single sign-on isn't set up for example.com
- The person typed their work email address.
- The connection shows Active, not Pending verification.
- The email’s domain exactly matches the connection. Subdomains need their own connection.
Your company's identity provider didn't allow this sign-in
Your company's identity provider didn't allow this sign-in
403 and app_not_enabled_for_user. Turn the app on for that person under User access.We couldn't reach your company's identity provider
We couldn't reach your company's identity provider
Your company's identity provider didn't complete sign-in
Your company's identity provider didn't complete sign-in
- The client secret in Lab is current. Secrets in some IdPs, including Microsoft Entra ID, expire. Create a new one and save it with Update credentials.
- Your IdP returns the person’s email address for the
emailscope.
We couldn't verify the sign-in response from your company's identity provider
We couldn't verify the sign-in response from your company's identity provider
invalid_saml_response). Check that:- The ACS URL and Entity ID in your IdP exactly match the connection’s card.
- Your IdP signs assertions, and assertion encryption is off.
- The Name ID is the person’s email address in the connected domain.
- The metadata in Lab is current. After a certificate rotation, use Update credentials.
- The person finished signing in at your IdP within five minutes of choosing Sign in with SSO. Lab’s sign-in request expires after that.
- The browser didn’t resend a finished sign-in, for example after going back. Start again from the Lab sign-in page.
Start single sign-on from the Lab sign-in page
Start single sign-on from the Lab sign-in page
unsolicited_response). Lab only accepts sign-ins that start from Sign in with SSO on the Lab sign-in page. If your IdP shows Anam as an app tile, point people to the sign-in page instead.Your organization can't add more members through single sign-on
Your organization can't add more members through single sign-on
organization_full), so people signing in with SSO for the first time can’t join. Existing members can still sign in. An owner or admin can remove people who no longer need access on the Team page, or contact support.SAML metadata errors when adding a connection
SAML metadata errors when adding a connection
- SAML metadata must include the IdP signing certificate: download the full metadata file from your IdP again and paste all of it.
- SAML metadata must provide a public HTTPS HTTP-Redirect sign-in endpoint: your metadata needs a
SingleSignOnServicewith the HTTP-Redirect binding and a public HTTPS URL. - The SAML identity-provider metadata is invalid: paste the whole XML document, starting with
<EntityDescriptoror<md:EntityDescriptor.
This metadata uses a different sign-in URL
This metadata uses a different sign-in URL
Single sign-on isn't available for your organization
Single sign-on isn't available for your organization
sso_unavailable) for one of two reasons:- The organization is no longer on an Enterprise plan. The sign-in page then shows Single sign-on is available on the Enterprise plan. To restore SSO, contact your account team or talk to our sales team.
- The connection was deleted while the person was signing in. Their next attempt shows Single sign-on isn’t set up for example.com. An owner or admin can add the connection again.
Your organization requires single sign-on
Your organization requires single sign-on
sso_required code, when someone on a covered domain tries a password, Google, GitHub or Forgot password. Choose Sign in with SSO on the Lab sign-in page and enter your work email. See Require SSO.Require SSO can't be turned on
Require SSO can't be turned on
- Verify a connection to require SSO: finish domain verification so a connection shows Active.
- Sign out and sign back in with SSO to turn this on: your current session didn’t start with SSO. Sign out, then sign back in with Sign in with SSO.
- Every verified domain is also claimed by another connection: delete the extra connection for each domain.
Everyone with access to the connection is locked out
Everyone with access to the connection is locked out
Limitations
- Lab doesn’t enforce MFA itself. Set your MFA policy in your IdP and require SSO so it applies to every sign-in.
- Requiring SSO controls Lab sign-in only. API keys keep working.
- There is no SCIM provisioning. People join when they first sign in, and you remove them on the Team page.
- IdP roles and groups aren’t mapped to Anam roles. New people join as members.
- IdP-initiated SAML sign-in, such as opening Anam from an IdP app dashboard, isn’t supported.

