Repository navigation
Limit credentials to the origin host - #28399
Open
Justin Chung (jshigetomi) wants to merge 2 commits into
Open
Justin Chung (jshigetomi) wants to merge 2 commits into
Justin Chung (jshigetomi) wants to merge 2 commits into
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Reused web sessions retain default credentials after UseDefaultCredentials is disabled, while credential-cache handling also causes redirect-authentication and connection-reuse regressions.
3 open issues
What changed in this PR
This PR hardens credential handling in PowerShell’s web cmdlets by scoping credentials to the request origin unless redirect authorization preservation is enabled.
Changes:
- Adds origin-scoped credential caches with authentication-scheme handling for explicit and default credentials.
- Updates shared session preparation to use the new credential handling.
- Expands both web cmdlets’ tests to check credential lookup across hosts, preservation settings, and URLs without a scheme.
| File | Description |
|---|---|
test/powershell/Modules/Microsoft.PowerShell.Utility/WebCmdlets.Tests.ps1 |
Expands credential-scoping tests for both web cmdlets. |
src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/WebRequestSession.cs |
Adds origin-scoped credential cache creation. |
src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs |
Routes explicit and default credentials through the new session helper. |
Review effort: Balanced
| else if (UseDefaultCredentials) | ||
| { | ||
| WebSession.UseDefaultCredentials = true; | ||
| WebSession.SetCredential(CredentialCache.DefaultNetworkCredentials, CheckProtocol(Uri), PreserveAuthorizationOnRedirect); |
| // Get the relevant NetworkCredential | ||
| NetworkCredential netCred = Credential.GetNetworkCredential(); | ||
| WebSession.Credentials = netCred; | ||
| WebSession.SetCredential(Credential.GetNetworkCredential(), CheckProtocol(Uri), PreserveAuthorizationOnRedirect); |
| cache.Add(origin, scheme, cred); | ||
| } | ||
|
|
||
| Credentials = cache; |
Anam Navied (anamnavi)
approved these changes
Nov 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


PR Summary
PR Context
PR Checklist