-
Notifications
You must be signed in to change notification settings - Fork 909
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(#3566) Avoid credential bleed from saved sources with the same hostname #3572
Conversation
658b4e7
to
54b7bee
Compare
The ExplicitSources property is used when looking up credentials. This backports this property from 2.x to 1.x.
6ea7d22
to
9d6c439
Compare
9d6c439
to
ab46595
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! One small comment. About a comment.
src/chocolatey/infrastructure.app/nuget/ChocolateyNugetCredentialProvider.cs
Outdated
Show resolved
Hide resolved
Previously we looked up any available sources in the config by the hostname, before falling back to trying an exact match if we had collisions. This still allowed credentials to be reused in situations where we don't actually know if they're applicable; many repository servers will support different credentials for individual repositories, so we cannot and should not assume that credentials for one repository will actually match another repository, nor that users want the credentials to be shared for both. It also led to the possibility of users storing one repository first, and then later specifying a different repository on the same server, and choco would try to use the stored credentials for the first repository for the explicitly-entered URL which is nowhere in config. Instead, we should only match the whole URL (which can be done with Uri. Equals to ensure that we match hostnames case-insensitively, but routes case-sensitively), and expect users to provide credentials if they provide a URL that is not explicitly in the sources. Additionally, we try to ensure that if a user has named a specific source, rather than themselves providing a URL at the command line, we prioritise finding that in the already-configured sources and use that source if the URL matches the current URL that NuGet requires a credential for.
ab46595
to
d22a10d
Compare
[Parameter()] | ||
[switch]$All |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was removed in the other PR, so should also be removed here, right?
@@ -0,0 +1,66 @@ | |||
Describe 'Ensuring credentials do not bleed from configured sources' -Tag CredentialProvider -ForEach @( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment here, as per the other PR. I think we need more words here as to what this test is doing, and why the asserts are set the way that they are.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple things here that I think needs to be addressed.
Add Pester tests to ensure we don't inadvertently bleed configured credentials into scenarios where they should not be used.
d22a10d
to
3d599b1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Description Of Changes
Backport #3568 to Chocolatey CLI 1.x
Motivation and Context
See #3566 - the credentials are being reused in places that they shouldn't.
Testing
Ran through Test Kitchen locally and in Team City.
To test with CLE locally I editted the
nupkg
produced by Team City and changed the version reported to be1.5.0-pullreques
and then tested with CLE5.0.6
.Screenshot from local test kitchen run:
Operating Systems Testing
Change Types Made
Change Checklist
Related Issue