Skip to content

fix: surface portal token JWT errors instead of masking as NuGet sync failure - #782

Draft
m-s- wants to merge 1 commit into
criticalmanufacturing:developmentfrom
m-s-:development-validate-login-tokens
Draft

fix: surface portal token JWT errors instead of masking as NuGet sync failure#782
m-s- wants to merge 1 commit into
criticalmanufacturing:developmentfrom
m-s-:development-validate-login-tokens

Conversation

@m-s-

@m-s- m-s- commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

cmf login --token with an invalid/opaque PAT or a JWT missing the sub claim previously crashed during NuGet sync at
NuGetRepositoryCredentials.cs:141 via new XAttribute(ValueAttr, null) -> ArgumentNullException wrapped as Failed to sync credentials into NuGet config file: /root/.nuget/NuGet/NuGet.Config, hiding the real cause.

  • PortalRepositoryCredentials.GetDerivedCredentials now catches ParseJwt failures and wraps them as Failed to derive credentials from Portal token ... token is not a valid JWT, and explicitly checks for missing/empty sub claim
  • NuGetRepositoryCredentials.ValidateCredentials now validates Username/Password (with hint about sub claim) and SyncCredentials validates early to avoid ArgumentNullException
  • RepositoryAuthStore.Save validates derived credentials before syncing so errors are surfaced directly
  • add regression tests for missing sub, invalid JWT format and NuGet missing username/password validation/sync

… failure

cmf login --token with an invalid/opaque PAT or a JWT missing the
sub claim previously crashed during NuGet sync at
NuGetRepositoryCredentials.cs:141 via new XAttribute(ValueAttr, null)
-> ArgumentNullException wrapped as Failed to sync credentials into
NuGet config file: /root/.nuget/NuGet/NuGet.Config, hiding the real
cause.

- PortalRepositoryCredentials.GetDerivedCredentials now catches
  ParseJwt failures and wraps them as Failed to derive credentials
  from Portal token ... token is not a valid JWT, and explicitly
  checks for missing/empty sub claim
- NuGetRepositoryCredentials.ValidateCredentials now validates
  Username/Password (with hint about sub claim) and
  SyncCredentials validates early to avoid ArgumentNullException
- RepositoryAuthStore.Save validates derived credentials before
  syncing so errors are surfaced directly
- add regression tests for missing sub, invalid JWT format and
  NuGet missing username/password validation/sync
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.

1 participant