Single Sign-On (SSO)

Every ByteHide account can sign in with an email code or with Google, GitHub, Microsoft, GitLab or Bitbucket. Enterprise single sign-on lets the members of your organization sign in to ByteHide with your Microsoft Entra ID tenant instead. You verify the email domains you own, choose whether SSO is optional or required for them, and can let Entra ID create, update and deactivate members for you through SCIM.

Enterprise

Enterprise SSO and SCIM are enabled per organization by ByteHide for Enterprise customers. Until they are, Organization settings → Security shows the notice "Enterprise SSO and SCIM are available on Enterprise", and the connection form and Create token are disabled. Owners can still add and verify domains in advance. Contact sales to enable them.

Open Settings → Organization → Security.


Sign-in Methods

Every ByteHide account, on any plan, can sign in with:

MethodHow
EmailEnter your email. ByteHide sends a magic link and a 6-digit code, valid for 15 minutes
Google, GitHub, MicrosoftButtons under the email field
GitLab, BitbucketUnder More options

Each account can also have a password, set or changed in Profile → Security → Change Password. In the same place, turn on Authenticator App to add two-factor authentication: signing in with the password then also asks for a code from your authenticator app. Email-code, social and Enterprise SSO sign-ins do not use it; for SSO, your identity provider handles multi-factor authentication.

Enterprise SSO adds sign-in through your organization's own Microsoft Entra ID tenant, for emails under domains you have verified. The Microsoft social button and Enterprise SSO are different: the social button signs in a single account, while Enterprise SSO is set up by your organization's owner, can be required for your domains, and can provision members with SCIM.

Not the same as MCP identity providers

This page covers signing in to the ByteHide console. Protecting an MCP route with your own identity provider (Okta, Entra ID, Auth0) is configured in AI runtime: see MCP Authentication.


Who Can Configure SSO

RoleSecurity tab
OwnerView and change everything: connection, domains and SCIM tokens
ManagerView only. The tab says "Managers can view these settings; only the organization owner can change them." and every control is disabled
Member, BillingNo access to the Security tab

Supported Providers and Protocols

ItemSupported
Identity providerMicrosoft Entra ID (formerly Azure AD), one connection per organization. SAML and other identity providers are not supported
Sign-in protocolOpenID Connect
ProvisioningSCIM 2.0, from Entra ID
Sign-in flowsService provider initiated (from the ByteHide sign-in page) and identity provider initiated (from the Entra ID My Apps portal)

Before You Start

You need:

  • An Owner role in the ByteHide organization.
  • An administrator in your Entra ID tenant who can create app registrations and enterprise apps.
  • Access to the DNS of every email domain your members use.

The setup takes about 20 minutes. The recommended order is: create the Entra app, create the connection in ByteHide, verify your domains, test, and only then require SSO.


Step 1: Register ByteHide in Entra ID

  1. In Entra ID, open App registrations → New registration.
  2. Name it, for example ByteHide. Under Supported account types, choose Accounts in this organizational directory only (single tenant).
  3. Set the redirect URI: platform Web, value taken from the Redirect URI field shown in ByteHide after you create the connection.
  4. Register the app. From Overview, copy the Application (client) ID and the Directory (tenant) ID.
  5. Under Certificates & secrets, create a New client secret and copy its Value. Entra shows it once. Note the expiry date.
  6. Under Token configuration, add the optional ID token claims email, given_name and family_name.
  7. Under API permissions, make sure openid, profile and email (delegated) are granted, and grant admin consent.
  8. Recommended: in Enterprise apps → ByteHide → Properties, set Assignment required to Yes, then assign the users and groups who should sign in.

Step 2: Create the Connection

The Single sign-on (Microsoft Entra ID) card holds the connection.

FieldDescription
Directory (tenant) IDYour Entra tenant ID. Required
Application (client) IDThe app registration's client ID. Required
Client secretThe secret value from Entra. Required when you create the connection. On later saves, leave it blank to keep the current one
Default role for new membersRole given to people created on first sign-in or by SCIM without a role: Member, Manager or Billing. Owner cannot be a default
Create accounts on first sign-in (JIT)When on, a person from a verified domain who is not yet a member becomes one on their first SSO sign-in. When off, only existing members and SCIM-provisioned people can sign in. On by default
Connection enabledTurns the connection on or off without deleting it
Route verified domains to Microsoft at sign-inWhen on, people who type an email under a verified domain on the sign-in page are offered your identity provider. On by default
Require SSO for verified domainsBlocks every other sign-in method for verified domains. Needs routing on. See Require SSO

Click Create connection. The card then shows two read-only values to copy into Entra ID:

  • Redirect URI: must match the redirect URI of the app registration exactly.
  • Sign-in URL (for the Entra app "Home page URL"): paste it into Branding & properties → Home page URL of the Entra app so people can start from the Entra My Apps portal.

The status chip next to the title shows active or disabled.

Rotate the Client Secret

Create a new secret in Entra, paste it into Client secret, click Save changes, then delete the old secret in Entra. Do this before the old secret expires: sign-in fails once it does.


Step 3: Verify Your Domains

Only email addresses under a verified domain can sign in through SSO or be managed by SCIM. Verify every domain your members use.

  1. In the Verified domains card, type the domain (for example example.com) and click Add domain.
  2. Publish the DNS record shown in the DNS TXT record column:
TypeHostValue
TXT_bytehide-verification.<your-domain>bytehide-domain-verification=… (copy it from the console)
  1. Click the refresh icon (Check DNS now). DNS changes usually propagate in minutes and can take up to an hour. Until then the check returns "TXT record not found yet".

A domain can belong to only one ByteHide organization. Adding a domain another organization already claimed fails with "This domain is already claimed."

Domain Status

ChipMeaning
pendingThe TXT record has not been found yet
verifiedOwnership is proven
Tenant matchesMicrosoft reports that your connection's Entra tenant owns the domain
Owned by tenant …Microsoft reports a different Entra tenant owns the domain
Not an Entra domainThe domain is not registered in any Entra tenant
Tenant not checkedByteHide has not received an answer from Microsoft yet

Removing a domain asks you to type the domain name to confirm. Members under it are no longer routed to your identity provider, and Entra ID can no longer manage them.


Step 4: Test

  1. Open a private browser window and go to the ByteHide sign-in page.
  2. Enter an email under a verified domain.
  3. Choose your organization's sign-in button, sign in with Microsoft, and check you land in the console.

Ask a few members to sign in once this way before you require SSO.


Require SSO

Turn on Require SSO for verified domains and click Save changes. From then on:

  • Email-code, password and social sign-in (Google, GitHub, Microsoft, GitLab, Bitbucket) are refused for every email under your verified domains.
  • Owners keep a break-glass login. Active owners of the organization are exempt: they can still sign in with an email code (the sign-in page offers a link for it) or a social login, so a broken connection never locks you out.
  • Members whose email is not under a verified domain, such as contractors on a personal address, are not affected.

Every domain must belong to your tenant

ByteHide refuses to require SSO while any verified domain is owned by another Entra tenant or is not an Entra domain: those accounts could not sign in at all. The error names the domains. Fix the tenant or remove the domain, then save again. ByteHide checks each domain with Microsoft every time you save; a domain still marked Tenant not checked does not block saving.

Turning Route verified domains to Microsoft at sign-in off also turns Require SSO off. Members then sign in as usual and can still use SSO through the sign-in URL.


How Members Sign In

The sign-in page asks for an email first and decides what to show:

SituationWhat the person sees
SSO required for the emailA Sign in with {organization} screen saying the organization requires signing in with Microsoft, a Sign in with Microsoft button, and for owners an Owner of {organization}? Use an email code link
Routed domain, no ByteHide account yetThe same screen with Continue with an email code instead as an alternative
Routed domain, existing account, SSO not requiredThe usual email-code step, with a Continue with {organization} SSO button
No SSO for the domainThe usual sign-in

People who look for SSO directly can click Sign in with SSO under the sign-in options, enter their Work email and click Continue. If no connection exists for that domain, the page says "No single sign-on is configured for {domain}" and offers an email code.

If someone tries another method after SSO became required, ByteHide refuses it and takes them back to this screen with the notice "{organization} requires single sign-on. Use Microsoft to sign in."

Identity Matching and Sessions

  • People are identified by their Entra object ID, not their email. Renaming a user in Entra keeps their ByteHide account.
  • On first SSO sign-in, an existing ByteHide account with the same email is linked to the Entra identity, but only if the email is under one of your verified domains.
  • Multi-factor authentication is handled by your tenant (for example with Conditional Access). ByteHide does not add its own two-factor step to SSO sign-ins.
  • SSO sessions last 24 hours. After that, people sign in through Entra again.

Automatic Provisioning (SCIM 2.0)

With SCIM, Entra ID creates, updates and deactivates members and syncs Entra groups to ByteHide teams. SCIM needs at least one verified domain. Set up the SSO connection first so provisioned members can sign in and get the connection's default role (without a connection they get Member).

Create a SCIM Token

  1. In the Automatic provisioning (SCIM 2.0) card, click Create token.
  2. Give it a Name and click Create token.
  3. Copy the token. It is shown once. Confirm I have copied my token and stored it securely and click Done.

Copy the Tenant URL (paste into Entra ID → Provisioning) from the same card.

The token list shows each token's name, prefix, Last used and Created dates. Revoke a token with the trash icon; you type the token name to confirm and Entra stops syncing with it immediately.

Configure Entra ID

  1. In Enterprise apps → ByteHide → Provisioning, create a configuration with the Tenant URL and the token as Secret Token, then Test Connection.
  2. Keep these user attribute mappings and remove the rest:
Entra attributeByteHide (SCIM) attribute
userPrincipalName (or mail)userName (matching, precedence 1)
objectIdexternalId (matching, precedence 2)
Switch([IsSoftDeleted], , "False", "True", "True", "False")active
givenNamename.givenName
surnamename.familyName
displayNamedisplayName
  1. For groups, map displayName (matching), objectId to externalId, and members.
  2. Set the scope to Sync only assigned users and groups, assign them, and Start provisioning.

userName must be an email under a verified domain. Any other value is rejected. If your user principal names are not real email addresses, map mail instead.

Roles From Entra (Optional)

To set ByteHide roles from Entra, create app roles on the app registration whose values are exactly member, manager, billing or owner, assign users to them directly (not through groups), and add the mapping SingleAppRoleAssignment([appRoleAssignments]) → roles[primary eq "True"].value. People without an app role get the connection's default role.

What Provisioning Does

In Entra IDIn ByteHide
Assign a userMember created, or existing account linked, with the default role and marked Directory
Update name or emailProfile updated. The email must stay within your verified domains
Unassign, disable or soft-delete a userMembership suspended. The person's sessions and API tokens are revoked and they are signed out of ByteHide
Hard deleteMembership removed. The person's ByteHide account is kept for their other organizations
Assign a groupTeam created
Change group membershipTeam membership updated

ByteHide always keeps at least one active owner: Entra cannot remove, deactivate or demote the last one.

Directory-Managed Members

Members created or adopted by SCIM show a Directory chip in Teams & Members. While at least one SCIM token is active, their role, status and membership can only be changed in Entra ID; the console disables those controls. Revoking every SCIM token makes them editable from the console again.


Existing Members

  • Setting up SSO does not remove anyone. Memberships, roles and teams stay as they are.
  • Existing members under a verified domain can keep signing in with an email code until you require SSO. On their first SSO sign-in their account is linked to Entra.
  • Members outside your verified domains (for example a personal email) cannot use SSO and are not affected by Require SSO or SCIM. Invite them as usual.
  • With SCIM on, an existing member under a verified domain that Entra provisions is adopted and becomes Directory-managed.

Remove the Connection

Click Remove connection and type remove to confirm. Single sign-on is disabled for the organization and every member's SSO identity link is deleted. Memberships are kept, and members sign in with the other methods again.


Troubleshooting

MessageCauseFix
"id_token issuer does not match the configured tenant"Wrong tenant ID, or a user from another tenant on a multi-tenant appCheck the tenant ID and make the app single tenant
"id_token audience does not match the configured client"Wrong client IDCopy the Application (client) ID again
"Your identity provider did not supply an email address."The ID token has no email claim and preferred_username is not an email addressAdd the optional email claim
"The email domain … is not verified for this organization."The person's email is under an unverified domainAdd and verify that domain
"Your account has not been provisioned. Contact your administrator."JIT is off and the person was not provisionedTurn on JIT or assign them through SCIM
"You are not a member of this organization. Contact your administrator."JIT is off and the account exists but is not a memberTurn on JIT, invite them, or provision them through SCIM
"Your access to this organization is suspended."The membership was deactivated in Entra or the consoleReactivate it
"Login attempt could not be verified. Please try again."The browser blocked the short-lived cookie set at the start of sign-inAllow cookies for the ByteHide sign-in page and retry
AADSTS50011 redirect URI mismatchThe redirect URI in Entra does not matchCopy the Redirect URI from the console exactly
SCIM Test Connection fails with 401The token is wrong or revokedCreate a new token and paste it again

Next Steps

Members and Teams

Roles, invitations and teams

Organizations

Organization settings, ownership and billing scope

Projects

Create projects and control who can see them

Previous
Projects