NVIDIA / NVIDIA/OpenShell

feat: allow specifying callback port for OIDC auth

Open
#3,300 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

state:triage-needed
Dominant language
Rust
Stars
8.7k
Forks
1.3k
Avg merge
2d 11h
Merged PRs (30d)
253

Description

User Story

As an openshell consumer, I'd need the OIDC flow to work with a specific ephemeral port for SSO login. This is because the underlying auth0 provider does not allow regex on the port for allowed callback urls

Problem Statement

Provide a way to fix the CLI ephemeral callback port to a specific value so that it's easier to add the callback url

Impact / Why This Matters

Right now the SSO login requires whitelisting every possible ephemeral port in localhost which is not ideal.

Proposed Design

Provide the control of port via env variable OPENSHELL_OIDC_CALLBACK_PORT or something similar

Acceptance Criteria
  • the callback port gets opened on specific port instead of any ephemeral port
Alternatives Considered

client credentials flow is what I am considering it for now

Agent Investigation

Spike Plan: feat: allow OIDC callback listener to bind a fixed port via env var
Scope decision: Env-var only (OPENSHELL_OIDC_CALLBACK_PORT) — no GatewayMetadata/clap changes.
Problem statement: The CLI's OIDC login flow binds an OS-assigned ephemeral port (127.0.0.1:0) for the local callback listener. Providers that require pre-registering exact redirect URIs can't reasonably whitelist the full ephemeral range, so login fails or requires impractical whitelisting.
Code changes (all in crates/openshell-cli/src/oidc_auth.rs):

  • :188 — check OPENSHELL_OIDC_CALLBACK_PORT; if set, parse as u16 and bind that specific port with a wrapped, actionable error on bind failure; else keep current bind("127.0.0.1:0") behavior.
  • No changes needed to redirect_uri construction (:189-190) or callback handling (:660-716) — they already work off whatever port the listener has.
    Labels: area:cli, state:validated
    Complexity: Low · Confidence: High · Est. files: 1 (+ docs, + tests)
    Risks to include in the issue:
  • Bind-failure UX must give actionable guidance (today's raw OS error is not user-friendly).
  • Fixed port is predictable, but existing CSRF state check + PKCE already prevent exploitation — mention, not a blocker.
  • No interaction with token/mTLS storage or TUI (confirmed).
    Docs impact: docs/reference/gateway-auth.mdx — add the new env var to the table (~line 92-98) and update prose at line 123.
    Test additions: unit test setting the env var and asserting the bound port matches; a bind-collision test asserting the friendly error message.
Checklist
  • I've reviewed existing issues and the architecture docs
  • This is a design proposal, not a "please build this" request

Contributor guide

Open the contributing guide

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 crates/openshell-cli/src/oidc_auth.rs around lines 188-190 and trace how the listener port reaches redirect_uri construction. Update docs/reference/gateway-auth.mdx around lines 92-98 and 123, then add unit coverage for the configured port and a bind-collision error. Done means the env var selects the listener port, invalid or unavailable ports produce actionable errors, and the default ephemeral behavior remains unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authentication, cli
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.