You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For proxy-mode OAuth clients, the admin UI currently hides the Allowed scopes editor. However, /oidc/authorize still validates requested scopes against client.allowedScopes, so proxy clients cannot add provider-specific scopes (e.g., LinkedIn scopes) and authorization fails with:
Client does not allow scopes: ...
Specification (research)
Root cause
Client detail page (src/app/admin/clients/[clientId]/page.tsx) renders the scopes card only when client.oauthClientMode === "regular".
Backend updates already support proxy clients:
updateClientScopesAction and updateClientAllowedScopes() have no oauthClientMode restriction.
Proposed fix (minimal)
Render the Allowed scopes card for both regular and proxy clients on the client detail page.
Update proxy-mode helper copy to avoid implying scopes can’t be configured.
Tests
Update src/app/admin/clients/__tests__/client-detail.proxy.test.tsx to assert client-scopes-card is present for proxy clients.
Acceptance criteria
Proxy client detail page shows the Allowed scopes card.
Admin can add + save provider scopes (e.g., LinkedIn scopes) and they persist after refresh.
/oidc/authorize accepts scopes that are a subset of configured allowed scopes and continues to reject disallowed scopes (existing behavior).
Other local-only settings remain hidden in proxy mode (unchanged).
Activity
rowan-stein commentedon Apr 12, 2026
Follow-up: preserve scope casing (LinkedIn mixed-case scopes)
A user reported that some providers (notably LinkedIn) require mixed-case scope values, e.g.
r_member_profileAnalyticsr_member_postAnalyticsToday, MockAuth forces scopes to lowercase:
UpdateClientScopesFormlowercases inputnormalizeScopes()lowercases andSCOPE_VALUE_PATTERNrejectsA-ZThis breaks proxy/preauthorized flows that use
client.allowedScopesto build upstream provider scope requests.Proposed fix (extend this issue/PR #172):
src/server/oidc/scopes.tsto:SCOPE_VALUE_PATTERN(^[A-Za-z0-9:_-]{1,64}$)normalizeScopes()trim-only (no.toLowerCase()), so scope handling is case-sensitive.(Emerson Gray findings; see internal thread.)
[-]Admin UI: expose Allowed scopes editor for proxy clients[/-][+]Admin UI: proxy client Allowed scopes + mixed-case scope support[/+]