posit-dev / posit-dev/vip

fix(workbench): session launch tests fail with SAML/Okta auth — login not shared from interactive auth

Open
#263 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

team: workbench
Dominant language
Python
Stars
8
Forks
1
Avg merge
18h 23m
Merged PRs (30d)
63

Description

Context

During a VIP verification call with Intuitive Surgical (2026-05-14), all Workbench IDE session launch tests (test_launch_rstudio, test_launch_vscode, test_launch_jupyter) failed with "login failed" errors on both their Workbench 2023 and Workbench 2026 instances.

Their environment:

  • AWS EKS deployment
  • SAML authentication via Okta
  • ALB in front of each product (separate ALBs for Connect and Workbench)
  • Interactive auth (--interactive-auth) was used

Connect tests passed (content publishing worked for all types), but the interactive auth session captured during Connect login did not carry over to Workbench.

Root Cause (Suspected)

workbench_login() in src/vip_tests/workbench/conftest.py:110 skips when auth_provider != "password" and there's no pre-loaded session. When --interactive-auth IS used, the storage state is captured from the Connect auth flow, but the SAML session cookie is scoped to the Connect hostname — it doesn't authenticate Workbench on a separate ALB/hostname.

The code at line 126-129 explicitly handles this case:

pytest.skip(
    "Interactive auth storage state did not authenticate Workbench. "
    "The OIDC session may not be shared between Connect and Workbench."
)

But the test reports "login failed" rather than gracefully handling the separate auth domain.

What the Customer Saw

FAILED test_launch_rstudio - login failed
FAILED test_launch_vscode - login failed  
FAILED test_launch_jupyter - login failed

With --verbose, no additional actionable trace was produced beyond the login failure.

Expected Behavior

When interactive auth is used and the products are on separate auth domains (common with ALB + SAML setups), VIP should either:

  1. Prompt for a separate Workbench interactive auth session, or
  2. Attempt to use the same IdP session cookies (if the IdP domain is shared even when product domains differ), or
  3. Provide a clear skip message explaining that Workbench requires its own auth session

Reproduction

  • Deploy Workbench behind a separate ALB from Connect
  • Configure SAML (Okta) auth
  • Run vip verify --workbench-url <url> --interactive-auth
  • Observe that the interactive auth captured for Connect does not authenticate Workbench

Additional Context

  • Gong call recording: https://us-1237.app.gong.io/call?id=348267831445141666
  • Customer offered to email full verbose trace stack output
  • Sam suspects the specific issue is SAML vs OIDC handling — VIP may be "looking for the wrong thing when it comes to logging in" for SAML providers
  • The 2023 Workbench failures were initially attributed to UI version differences, but the same failure occurred on 2026, confirming it's an auth issue not a selector issue

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/vip_tests/workbench/conftest.py around workbench_login() at lines 110 and 126-129, then run test_launch_rstudio, test_launch_vscode, and test_launch_jupyter with --interactive-auth. Compare the Connect and Workbench storage-state handling during the separate-ALB SAML/Okta reproduction. Done means the tests either obtain the needed Workbench authentication or report a clear, intentional skip instead of a generic login failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
authentication, backend, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.