Release v2.17.0
Summary
Every OIDC handshake (Microsoft, Google) failed with "Correlation failed" and looped back to provider selection, because the handler's default form_post response mode returns the authorization code in a cross-site POST — which browsers never attach the SameSite=Lax correlation cookie to. This surfaced hardest in the credential-link flow (Cratis/StudioIssues#104), where the failure additionally landed on the sign-in selection page, offering to replace the very session the link was preserving. The link flow is now also embeddable in the product's modal iframe, with the provider leg in its own top-level window.
Added
ResponseModesetting per OIDC provider (Querydefault,FormPostfor providers that mandate it, such as Apple) — choosingFormPostswitches that provider's handshake cookies toSameSite=None; Secure- Embeddable credential-link flow:
/.cratis/linkserves a provider-selection page for the product to frame,/.cratis/link/completeends a successful link, and the pages report the outcome over aBroadcastChanneland an origin-checkedpostMessageto the embedding page Link:EmbedAncestorssetting naming the origins allowed to frame the link pages (selffor the proxy's own origin); when empty — the default — the link pages sendframe-ancestors 'none'andX-Frame-Options: DENYlink-select-provider.htmlandlink-complete.htmlwell-known pages, deployment-replaceable like every other page
Changed
- OIDC providers request the code flow's standard
queryresponse mode, so the provider callback is a top-level GET theSameSite=Laxhandshake cookies accompany (Cratis/StudioIssues#104) - A credential link with no (or an invalid)
returnUrlends on the flow's own completion page instead of the application root - Sign-in selection pages (provider selection, its SPA, invitation selection) always refuse framing
- The selection SPA served at
/.cratis/select-providernow matches the static selection pages' design instead of its own dark theme (Cratis/StudioIssues#104) - A challenge navigation identified as framed (
Sec-Fetch-Dest) is answered with the link selection page instead of a redirect the external identity provider would refuse to render framed
Fixed
- OIDC sign-ins and credential links no longer fail with "Correlation failed" and loop through provider selection (Cratis/StudioIssues#104)
- A failed link challenge ends on the link-failed page instead of the sign-in selection page, which offered full sign-ins that would replace the preserved session (Cratis/StudioIssues#104)
🤖 Generated with Claude Code