Skip to content

Preserve pending OIDC interaction during signup - #562

Merged
notquitenothing merged 2 commits into
voidauth:mainfrom
b4iterdev:fix/preserve-signup-oidc-interaction
Sep 14, 2026
Merged

notquitenothing merged 2 commits into
voidauth:mainfrom
b4iterdev:fix/preserve-signup-oidc-interaction

Conversation

@b4iterdev

Copy link
Copy Markdown
Contributor

Preserve an existing, unfinished OIDC interaction when a user navigates from login to signup. This allows registration to complete the authorization flow initiated by the application.

Standalone signup continues to create an internal interaction when no interaction exists.

Description

Problem

When a user starts login from an OIDC client application and selects Sign Up on VoidAuth, RegistrationComponent.ngOnInit() checks /api/interaction/exists.
A response of 200 with successRedirect: null means an interaction exists but authentication has not completed. Previously, the registration page discarded that interaction by calling createInteraction(true).
This starts a new authorization request for auth_internal_client, replacing the original application's authorization context. After registration, the browser follows VoidAuth's internal callback to DEFAULT_REDIRECT or APP_URL instead of returning to the application.
This causes end-user to instead of being redirected to the application's page after signing up to the VoidAuth's page. This behavior does not persist on user that are already logged in/started signing in.

Changes

Remove the branch that creates a replacement interaction when an existing interaction has not yet completed.

This matches the login page's handling:

  • Preserve pending interactions.
  • Follow the success redirect for completed interactions.
  • Create an internal interaction when no interaction is available.

Steps to reproduce:

  • Sign out of VoidAuth.
  • Start login from an application configured as an OIDC client.
  • Select Sign Up on VoidAuth's login page.
  • Register a new account and complete or skip passkey enrollment.

Before: Registration returns to VoidAuth's default destination.

Expected: Registration resumes the original application's authorization flow, including any applicable consent or other required steps.

Validation

  • Reproduced the original issue against a live deployment.
  • A regression check executing the registration initializer failed before the change and passed afterward.
  • Checked pending, missing, and completed interaction handling.
  • Production frontend build and TypeScript check passed.
  • Commit hooks passed.
  • Local browser QA with mocked SSO responses confirmed signup makes no replacement internal-client authorization request and follows the supplied continuation URL.

Related Tickets & Documents

None was related as far as I know prior to the date of opening this PR.

AI Usage

AI assistance: OpenCode (Hephaestus) identified the faulty branch, removed it, and ran regression checks and browser QA.

Screenshots

None.

Keep the existing authorization interaction when registration starts from an application login. Only create an internal interaction when no interaction is available, preserving the original client callback after signup.

AI assistance: OpenCode (Hephaestus) identified the faulty branch, removed it, and ran regression checks and browser QA.
Copilot AI lite review requested due to automatic review settings September 9, 2026 12:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The change is a minimal, targeted removal that aligns registration’s interaction handling with login behavior and preserves the intended OIDC authorization context.

Pull request overview

This PR updates the registration page initialization flow to preserve an existing, pending OIDC interaction when users navigate from login to signup, ensuring signup resumes the original client application’s authorization context instead of replacing it with an internal-client interaction.

Changes:

  • Removed the registration initializer branch that discarded an existing (but incomplete) interaction by creating a new internal interaction.
  • Kept the existing behavior of redirecting immediately when successRedirect is present and creating an interaction only when the interaction session is missing.
File summaries
File Description
frontend/src/app/pages/registration/registration.component.ts Stops replacing pending OIDC interactions during signup initialization so registration can continue the original client flow.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@notquitenothing
notquitenothing merged commit 3da3484 into voidauth:main Sep 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants