docs: add Microsoft Entra ID setup guide#983
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
New page at /guides/user-sources/microsoft-entra-id/ walks through registering an Entra ID app for use as a User Source: app registration, redirect URL, client secret, openid permission, then the value mapping into Arcade's User Source form. Audience is an admin who isn't an OIDC expert. The page uses only the four terms shared with Arcade's User Source form (issuer URL, client ID, client secret, subject claim); plain-English everywhere else, with explicit mappings between Entra labels and Arcade fields. Includes: - single-directory vs any-directory choice framed in plain terms, with the corresponding issuer URL variant for each - recommendation to use `oid` for the subject claim, with the one-line reason - PKCE note (Entra accepts it automatically; no extra setting) - note that certificate credentials aren't supported today - TODO screenshot placeholders at the natural spots in the Steps block Add Entra and Entra ID to the Arcade Vale vocabulary. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… Overview
- Drop spaces around em-dashes (Google.EmDash) in 4 screenshot TODO
comments and 2 prose spots (Client Secret note, openid permission
note); rewrote the User.Read sentence with a semicolon for clarity
- Drop the "We'll add certificate support" sentence (Google.We); the
surrounding sentence already conveys the limitation
- Rename the User Sources section index to "Overview" in the sidebar
via the user-sources _meta.tsx so the section reads:
User Sources
Overview
Microsoft Entra ID
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The remark-glossary plugin auto-links the first occurrence of any Arcade glossary term per paragraph. On per-provider User Source pages (Microsoft Entra ID today, Okta/Auth0/Stytch/Clerk next), terms like "account" and "tenant" appear constantly in the provider's sense — not Arcade's — and the resulting tooltips mislead readers. Exempt /guides/user-sources/*/page.mdx from glossary auto-linking, but keep the User Sources overview (/guides/user-sources/page.mdx) opted in, since that page is where the Arcade-specific concepts get defined. Same path-based skip pattern as the existing /resources/integrations/ exemption. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add an MDX comment to bust Next.js/Vercel's cached MDX compilation for this page. The Vercel build keeps .next/cache across deploys and didn't pick up the lib/remark-glossary.ts skip we added in bdf0f46 because the page source itself hadn't changed. The comment also documents the exemption inline for future readers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… issuer The Entra portal's "Supported account types" dropdown lists four options, with labels different from what this page had: - Single tenant only — <tenant name> - Multiple Entra ID tenants - Any Entra ID Tenant + Personal Microsoft accounts - Personal accounts only Update the step to name the two workforce-relevant options exactly as they appear in the dropdown, and explicitly steer readers away from the two personal-account variants since they sit outside the workforce identity model User Sources are designed for. Also fix the issuer URL recipe: the previous text used `login.microsoftonline.com/common/v2.0` for the multi-tenant case, but `common` accepts personal Microsoft accounts in addition to work or school accounts. For workforce-only multi-tenant, the correct endpoint is `login.microsoftonline.com/organizations/v2.0`. Update the trailing "Single-directory recommendation" note to reuse the new "Single tenant only" terminology. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add four light-mode screenshots from the Entra admin center to public/images/user-sources/microsoft-entra-id/ (app registrations list, registration form, client secret value, openid API permission) and replace the TODO MDX comments with <Image> elements - Remove the temporary glossary-cache-bust comment; the glossary plugin exemption is documented in lib/remark-glossary.ts - Drop the fenced code block for the redirect URL; inline code on its own line is enough visual emphasis and removes the PLAINTEXT header - Rewrite the Subject Claim cell to explain the real reason `oid` is preferable to `sub` (sub is unique per app registration, so it doesn't trace back to a directory identity) and to `email` (`oid` is durable even if the address changes) - Drop the "Single-tenant recommendation" Note; it was disconnected from where the choice is actually made - Add a "Custom subject claims" Note pointing to Entra's optional claims docs, with the constraint that Arcade can only read claims that land in the ID token Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cb99398 to
c34d209
Compare
|
Not an expert here so take with a grain of salt - Reviewed this against the coordinator's User Source / OIDC validation code on 🔴 The multi-tenant Issuer URL value won't validateThe "Copy these values to Arcade" table tells admins who pick Multiple Entra That specific value can't be saved or used. Two reasons, both verified:
Both checks are intentional (exact-match is the secure default, called out in the The fixThe account-type choice and the Issuer URL are independent. Whichever account ( Suggest dropping the conditional/ One limitation worth a sentence in NotesBecause Arcade matches ⚪ Minor: "Copy these values" table points to the Overview pageThe framing implies all four values live on the app's Overview page, but the ✅ Checked and cleanGlossary plugin exemption (overview stays opted-in, provider pages skipped, no |
vfanelle
left a comment
There was a problem hiding this comment.
I tried creating an Entra account, and failed :/ It requires a credit card in the free trial. I used my personal one, but even after triple checking my info it was rejected. I suspect it wanted one with a billing address that matches our business address.
Otherwise, I read the doc and it makes sense. I approve.
@samkujovich can you try the Entra integration with the company card to double check the instructions in the doc that'll go live for customers?
Summary
Adds the Microsoft Entra ID per-provider setup guide as the first concrete provider page under
/guides/user-sources/. Walks an admin through registering an Entra app for use as an Arcade User Source: app registration, the Arcade redirect URL, the client secret, theopenidpermission, then a mapping table from Entra labels to the four fields in Arcade's User Source form.Closes GRO-96. Part of the GRO-75 umbrella.
What landed in this PR
app/en/guides/user-sources/microsoft-entra-id/page.mdx(the Entra walkthrough).public/images/user-sources/microsoft-entra-id/(app registrations entry, registration form, client secret created, openid API permission).app/en/guides/user-sources/_meta.tsx.lib/remark-glossary.ts) extended to skip auto-linking on/guides/user-sources/*/page.mdxso Microsoft terms like "account" and "tenant" don't pop misleading Arcade tooltips. The User Sources overview itself stays opted in.Entra/Entra IDadded to the Arcade Vale vocabulary.Audience and structure
The reader is an admin who's never done OIDC before — they trust Arcade to be the auth expert. The page uses only the four terms that appear identically in both products (issuer URL, client ID, client secret, subject claim); plain English everywhere else, with explicit mappings between Entra labels and Arcade fields.
This shape is intentionally a reusable template for the remaining per-provider guides (Okta, Auth0, Stytch, Clerk):
<Steps>block, action-orientedDecisions worth flagging
login.microsoftonline.com/organizations/v2.0, not/common/v2.0.commonaccepts personal Microsoft accounts in addition to work or school;organizationsis workforce-only and matches the Multiple Entra ID tenants choice on the form.oidwith the real reason:subis unique per app registration (so it doesn't trace back to a directory identity), andoidis durable even if the person's email changes. The Notes section also links to Entra's optional claims docs with the constraint that Arcade can read any claim that lands in the ID token (not access tokens or other types).Test plan
Entra/Entra IDto the Arcade vocab)check-meta-keys— all_meta.tsxkeys validpnpm build—/en/guides/user-sources/microsoft-entra-idrenders in the route tableFollow-ups (not in this PR)
🤖 Generated with Claude Code