Single sign-on with OpenID Connect
Connect Mirra to your own identity provider so people sign in with their work account, using OpenID Connect and email-domain matching.
Single sign-on is presented as an Enterprise feature — the section in Settings is headed "Single sign-on (Enterprise)".
What Mirra supports
Any standards-compliant OpenID Connect provider. Mirra reads your provider's discovery document and works out the rest, so there is no per-vendor configuration to maintain — the settings panel names Entra ID, Okta, Google Workspace, Authentik and Keycloak, and anything else that publishes the same document behaves the same way.
The flow is authorisation code with PKCE. Mirra asks for the openid, email and profile scopes, and verifies the returned ID token against your provider's published signing keys, checking the issuer and that the token was issued for your client. Nothing is taken on face value.
- OpenID Connect only. SAML is not supported.
- One connection per Mirra account, matched to one email domain.
- People still arrive at the ordinary sign-in page; the handoff happens after they type their address.
What you need from your provider
Create an application — a web application, confidential client — in your identity provider, and collect four things. Registering the redirect URI is the step people forget, and the symptom is an error page from the provider rather than from Mirra.
- The issuer URL. It must be https, and appending /.well-known/openid-configuration to it must return the provider's OpenID configuration. For Entra ID that looks like https://login.microsoftonline.com/<tenant>/v2.0.
- The client ID.
- The client secret.
- The redirect URI to register with your provider: your Mirra address followed by /api/auth/sso/callback. The exact string is printed at the foot of the settings panel so you can copy it rather than construct it.
- The email domain your people sign in with, such as example.com.
Setting it up
Register the application with your provider
Web application, authorisation code flow, with your Mirra address plus /api/auth/sso/callback as the redirect URI. Grant it the openid, email and profile scopes.
Open Settings and find Single sign-on (Enterprise)
Settings is in the account menu under your own name. The section is below Branding and Notifications, and above Your data. Who can sign in is not there — it moved to the Account page, beside Change password.
Fill in the four fields
Issuer URL, Email domain, Client ID, Client secret. The domain is lower-cased for you and must look like a real domain.
Decide about automatic accounts
Create accounts on first sign-in is ticked by default. Untick it if you would rather create every account yourself, in which case somebody your provider authenticates but Mirra has never seen is turned away.
Tick Enabled
An unticked connection is saved and dormant — the panel labels it "configured, off" — which is how you stage the setup before anybody depends on it.
Press Save connection
The button reads Verifying… while Mirra fetches the discovery document at your issuer. If it cannot read it, nothing is saved and you are told so. That refusal is deliberate: a broken connection would lock people out of their own account.
Test with a second browser
Sign out, or use a private window, and enter an address on your domain. You should be sent to your provider and returned signed in. Keep your existing signed-in session open until this works.
When you edit an existing connection, leaving the client secret blank keeps the stored one. The field is never populated with the current value — Mirra does not return it to the browser at all.
The settings
What signing in looks like
There is no separate SSO button. Somebody fills in the ordinary sign-in form and presses Sign in; if the domain has an enabled connection, they are handed straight to your provider and the password is never checked against anything. The form still asks for one, because it is the same form everybody else uses — so tell your people to type something in that box and ignore it.
When they come back, Mirra exchanges the code, verifies the ID token's signature against your provider's keys, and only then issues a session.
A sign-in attempt is remembered for ten minutes and held in the memory of the process that started it. If Mirra restarts mid-sign-in, or an install runs several instances without sticky sessions and the return lands on a different one, the attempt shows as expired. Trying again is the whole fix.
Email-domain matching
The domain is checked twice, and the second check is the one that matters. On the way out it decides whether to use SSO at all. On the way back, the address your provider asserts must still be in the configured domain — otherwise a provider that can be talked into issuing a token for some other address would be able to walk into your account with it.
A mismatch fails the sign-in, is recorded, and shows on the sign-in page as "Your identity provider returned an email outside the configured domain."
- The address in the ID token, not the address that was typed, is what the account is matched on.
- An address that already belongs to an account in a different Mirra household is refused rather than moved.
- A domain belongs to one connection. If two accounts on the same install claim the same domain, sign-ins for it go to whichever connection is found first — so use a domain you actually control.
Accounts created on first sign-in
With Create accounts on first sign-in left on, somebody from your domain who has never used Mirra gets an account the moment they successfully sign in. Their name comes from the token, and they are given a password that cannot be used, because they will never need one.
Those accounts are not created as owners. In practice that means a new person can sign in and will find most of the portal closed to them until somebody with full access says otherwise. That is the safe direction for an automatic account to fail in, but it does mean provisioning is not the last step — somebody still decides what each person may do.
Open Account and find Who can sign in
Beside Change password. Every account in the household is listed there with a role beside it.
Set the role you want for the new person
Full access reaches screens, scenes, schedules, photos and billing. Menus only signs in, edits menus, and sees nothing else.
If the row already reads Full access but the person cannot reach anything
Switch the dropdown to Menus only and then back to Full access. The dropdown falls back to showing Full access for a role it does not recognise, so leaving it alone changes nothing. That writes the role for real, and the change takes effect on their next request rather than their next sign-in.
Only an owner can change roles, nobody can change their own, and the last owner cannot be demoted — a household with no owner has lost its screens, its billing and any way of appointing a replacement.
When it goes wrong
A failed round trip returns to the sign-in page with the reason in the address bar rather than silently dropping you back at the form. The message on screen names it.
- domain_mismatch — your provider returned an address outside the configured domain.
- no_account — the person is not in Mirra and automatic sign-up is off.
- wrong_tenant — that address already belongs to an account in a different household.
- expired — more than ten minutes passed, or the attempt was started by a process that has since restarted.
- discovery_failed — the issuer's OpenID configuration could not be read at that moment.
- verification_failed — the code exchange failed, or the ID token did not verify. Check the client secret and that the redirect URI registered with your provider matches exactly.
- missing_code — the provider returned without a code, usually because the sign-in was cancelled.
- Anything else in brackets is your provider's own error code, passed through unchanged.
Turning it off
Remove deletes the connection and everyone goes back to signing in with a password.
Give anybody who needs continued access a password first
Under Who can sign in, an owner can create a sign-in with an initial password and pass it on. The person changes it from their own account page.
Press Remove in the Single sign-on section
You are asked to confirm. The removal is recorded in the audit log.
Accounts created by single sign-on hold no password anybody knows, and Mirra has no password-reset email. Removing the connection leaves those people unable to sign in at all. The repair is for an owner to delete each account under Who can sign in and create it again with an initial password — so do this deliberately, not to see what happens.
Related
- Sign-ins and rolesHow to give somebody their own password for your Mirra account, and exactly what each of the two roles — full access and menus only — can reach.
- Your dataSet how long Mirra keeps assistant transcripts, presence and the activity log, take a copy of everything held about your household, and close the account for good.
- Plans and allowancesWhat each Mirra plan includes — screens, household members and assistant credits — how credits are metered, and what happens when you reach a limit.
- Getting help and raising a ticketHow to raise a support ticket inside Mirra, what to put in it so it can be answered on the first read, where the support documents live, and how to suggest something for the roadmap.