docs: add Enterprise section with SAML SSO setup guide - #633
Merged
Conversation
Adds a new top-level Enterprise section with an overview page and a SAML single sign-on page. SAML is not self-serve yet, so the SSO page is written around what a customer needs to send Shorebird to have a connection created by hand: the email domain, IdP entity ID, IdP SSO URL, and X.509 signing certificate, which are exactly the customer-supplied fields on the admin SAML connection form. It also documents the values to configure on the IdP side (ACS URL, audience URI, Name ID format, signing requirements), the required `email` attribute statement without which sign-in fails, Okta-specific steps with links to Okta's docs, and the behavioral limits that fall out of the implementation: SP-initiated sign-in only, one connection per email domain, and SSO being separate from organization membership. Adds "Okta" to the Vale sentence-case heading exceptions. Claude-Session: https://claude.ai/code/session_01GsTSRKxu4GHV2K3ZL4Z26s
easymac
approved these changes
Aug 28, 2026
easymac
left a comment
Contributor
There was a problem hiding this comment.
👍 Looks good, checked for accuracy with our config process. Wondering whether we should exclude all of the limitations/non-supported flows? People asking for them is data for us? Don't want to confuse or surprise anyone, but not sure whether we're better off with a preemptive "no" vs hearing them ask for something. No real opinion.
Contributor
Author
|
We should document what we don’t support today with maybe a “ask us”. The
vast majority of asks we can solve much faster than customers expect.
…On Fri, Aug 28, 2026 at 10:32 AM Mac ***@***.***> wrote:
***@***.**** approved this pull request.
👍 Looks good, checked for accuracy with our config process. Wondering
whether we should exclude all of the limitations/non-supported flows?
People asking for them is data for us? Don't want to confuse or surprise
anyone, but not sure whether we're better off with a preemptive "no" vs
hearing them ask for something. No real opinion.
—
Reply to this email directly, view it on GitHub
<#633?email_source=notifications&email_token=AADU2TJ6GM3NVHMQIYO4FJT5MG62TA5CNFSNUABKM5UWIORPF5TWS5BNNB2WEL2QOVWGYUTFOF2WK43UKJSXM2LFO4XTKMBVGM2TAMZXGY32M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#pullrequestreview-5053503767>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AADU2TO76PSBW6I54V2NXGL5MG62TAVCNFSNUABFKJSXA33TNF2G64TZHM3DGMRRGI3DANBYHNEXG43VMU5TKMRYGA2DCNBSHE22C5QC>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a new top-level Enterprise section with two pages, wired into the sidebar between Account and System.
enterprise/index.mdxShort overview of what the Enterprise plan covers — SAML SSO, the full role set including App Manager, invoice billing and procurement, higher patch volume — linking to the existing Billing and Organizations pages.
enterprise/saml.mdxSAML is not self-serve yet, so this page is written around what a customer needs to send us so we can create the connection by hand. Content is derived from the actual implementation (
saml.server.ts, theauth.saml.*routes, and the adminsaml._index.tsxform):idp_certificateisNOT NULL). Sending the IdP metadata URL instead is offered as the shortcut.https://auth.shorebird.dev/auth/saml/callback(the prod default; only dev overridesSAML_CALLBACK_URL), audience URI, Name ID format, blank RelayState, response and assertion signed, and that we send unsigned AuthnRequests.emailattribute statement gets its own section — node-saml only populatesprofile.emailfromemail,mail, or the OID, so a missing attribute statement is the most likely setup failure.Worth a look, @easymac
The page tells customers to name any members who already have a Shorebird account created via Google or Microsoft at the same domain, since
adoptOrRejectthrowswrong_providerwhen the issuer differs and their first SSO sign-in will fail. The doc frames that as something to mention in the email; the migration itself is a manual step on our side. Let me know if you'd rather word that differently or leave it out.Also adds
Oktato the Vale sentence-case heading exceptions.npm run buildpasses with all internal links valid, and cspell is clean. I couldn't run Vale locally (the@vvago/valebinary isn't installed in this checkout), so the three custom rules were checked by hand — CI will confirm.