artifacts-credprovider: Basic Authentication - Response status code does not indicate success: 401 (Unauthorized)
Hello,
We use the following systems:
-
Azure DevOps Pipelines
-
external Feed (ProGet from Inedo https://inedo.com/proget)
-
self hosted build agents (Windows Server 2022)
We have the following issue:
I can’t get the credential provider running with the external feed. It does not work in the pipeline and it does not work manually.
I try the following:
dotnet new classlib --name proget_experimental
cd proget_experimental
dotnet new nugetconfig
dotnet nuget disable source nuget
dotnet nuget add source "https://internalproget.server.com/nuget/Experimental/v3/index.json" --name "ProGet Experimental (Basic Auth)"
dotnet add package MsgPack.Cli
And I’m getting:
Response status code does not indicate success: 401 (Unauthorized).
I prepared the system with the following:
$env:VSS_NUGET_EXTERNAL_FEED_ENDPOINTS = '{"endpointCredentials": [{"endpoint":"https://internalproget.server.com/nuget/Experimental/v3/index.json", "username":"username", "password":"password"}]}'
$env:NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS=30
$env:NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=30
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }"
When I manually add the dependcy to the *.csproj file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MsgPack.Cli" Version="1.0.1" />
</ItemGroup>
</Project>
and run dotnet restore -v d
, I get the following output:
Task "RestoreTask"
(in) RestoreGraphItems Count '5'
(in) RestoreDisableParallel 'False'
(in) RestoreNoCache 'False'
(in) RestoreIgnoreFailedSources 'False'
(in) RestoreRecursive 'True'
(in) RestoreForce 'False'
(in) HideWarningsAndErrors 'False'
(in) RestoreForceEvaluate 'False'
(in) RestorePackagesConfig 'False'
X.509 certificate chain validation will use the default trust store selected by .NET.
Running non-parallel restore.
Reading project file C:\Users\<USER>\proget_experimental\proget_experimental.csproj.
The restore inputs for 'proget_experimental' have changed. Continuing restore.
Restoring packages for C:\Users\<USER>\proget_experimental\proget_experimental.csproj...
Restoring packages for .NETCoreApp,Version=v6.0...
Using C:\Users\<USER>\.nuget\plugins\netcore\CredentialProvider.Microsoft\CredentialProvider.Microsoft.dll as a credential provider plugin.
[CredentialProvider.073911]Running in plug-in mode
[CredentialProvider.073911]Command-line v1.0.2+c2bc059db245a21f09d4e9afa92bba813c567488: C:\Users\<USER>\.nuget\plugins\netcore\CredentialProvider.Microsoft\CredentialProvider.Microsoft.dll -Plugin
[CredentialProvider.073911]Handling 'Request' 'Initialize'. Time elapsed in ms: 4 - Payload: {"ClientVersion":"6.3.2","Culture":"en-US","RequestTimeout":"00:00:30"}
[CredentialProvider.073911]Sending response: 'Request' 'Initialize'. Time elapsed in ms: 4
[CredentialProvider.073911]Time elapsed in milliseconds after sending response 'Request' 'Initialize': 6
[CredentialProvider.073911]Handling 'Request' 'GetOperationClaims'. Time elapsed in ms: 0 - Payload: {}
[CredentialProvider.073911]Sending response: 'Request' 'GetOperationClaims'. Time elapsed in ms: 6
[CredentialProvider.073911]Time elapsed in milliseconds after sending response 'Request' 'GetOperationClaims': 20
[CredentialProvider.073911]Handling 'Request' 'SetLogLevel'. Time elapsed in ms: 5 - Payload: {"LogLevel":"Debug"}
[CredentialProvider]Sending response: 'Request' 'SetLogLevel'. Time elapsed in ms: 6
[CredentialProvider]Time elapsed in milliseconds after sending response 'Request' 'SetLogLevel': 18
[CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 3 - Payload: {"Uri":"https://internalproget.server.com/nuget/Experimental/v3/index.json","IsRetry":false,"IsNonInteractive":true,"CanShowDialog":false}
[CredentialProvider]Creating a progress reporter with interval: 00:00:02
[CredentialProvider]Handling auth request, Uri: https://internalproget.server.com/nuget/Experimental/v3/index.json, IsRetry: False, IsNonInteractive: True, CanShowDialog: False
[CredentialProvider]URI: https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Using NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider to try to get credentials for https://internalproget.server.com/nuget/Experimental/v3/index.json.
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - IsRetry: False
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Parsing json
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Found credentials for endpoint https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Sending response: 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 40
[CredentialProvider]Time elapsed in milliseconds after sending response 'Request' 'GetAuthenticationCredentials': 43
[CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 0 - Payload: {"Uri":"https://internalproget.server.com/nuget/Experimental/v3/index.json","IsRetry":true,"IsNonInteractive":true,"CanShowDialog":false}
[CredentialProvider]Creating a progress reporter with interval: 00:00:02
[CredentialProvider]Handling auth request, Uri: https://internalproget.server.com/nuget/Experimental/v3/index.json, IsRetry: True, IsNonInteractive: True, CanShowDialog: False
[CredentialProvider]URI: https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Using NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider to try to get credentials for https://internalproget.server.com/nuget/Experimental/v3/index.json.
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - IsRetry: True
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Found credentials for endpoint https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Sending response: 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 1
[CredentialProvider]Time elapsed in milliseconds after sending response 'Request' 'GetAuthenticationCredentials': 2
[CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 0 - Payload: {"Uri":"https://internalproget.server.com/nuget/Experimental/v3/index.json","IsRetry":true,"IsNonInteractive":true,"CanShowDialog":false}
[CredentialProvider]Creating a progress reporter with interval: 00:00:02
[CredentialProvider]Handling auth request, Uri: https://internalproget.server.com/nuget/Experimental/v3/index.json, IsRetry: True, IsNonInteractive: True, CanShowDialog: False
[CredentialProvider]URI: https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Using NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider to try to get credentials for https://internalproget.server.com/nuget/Experimental/v3/index.json.
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - IsRetry: True
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Found credentials for endpoint https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Sending response: 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 1
[CredentialProvider]Time elapsed in milliseconds after sending response 'Request' 'GetAuthenticationCredentials': 1
[CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 0 - Payload: {"Uri":"https://internalproget.server.com/nuget/Experimental/v3/index.json","IsRetry":true,"IsNonInteractive":true,"CanShowDialog":false}
[CredentialProvider]Creating a progress reporter with interval: 00:00:02
[CredentialProvider]Handling auth request, Uri: https://internalproget.server.com/nuget/Experimental/v3/index.json, IsRetry: True, IsNonInteractive: True, CanShowDialog: False
[CredentialProvider]URI: https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Using NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider to try to get credentials for https://internalproget.server.com/nuget/Experimental/v3/index.json.
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - IsRetry: True
[CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Found credentials for endpoint https://internalproget.server.com/nuget/Experimental/v3/index.json
[CredentialProvider]Sending response: 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 1
[CredentialProvider]Time elapsed in milliseconds after sending response 'Request' 'GetAuthenticationCredentials': 1
C:\Users\<USER>\proget_experimental\proget_experimental.csproj : error NU1301: Unable to load the service index for source https://internalproget.server.com/nuget/Experimental/v3/index.json.
When I add username and password everything is working:
dotnet new classlib --name proget_experimental
cd proget_experimental
dotnet new nugetconfig
dotnet nuget disable source nuget
dotnet nuget add source "https://internalproget.server.com/nuget/Experimental/v3/index.json" --name "ProGet Experimental (Basic Auth)" --username "username" --password "password"
dotnet add package MsgPack.Cli
When I execute the following, I also have a positive response:
C:\Users\<USER>\.nuget\plugins\netcore\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe -I -V Verbose -U "https://internalproget.server.com/nuget/Experimental/v3/index.json"
[Verbose] [CredentialProvider]Running in stand-alone mode
[Verbose] [CredentialProvider]Command-line v1.0.2+c2bc059db245a21f09d4e9afa92bba813c567488: C:\Users\<USER>\.nuget\plugins\netcore\CredentialProvider.Microsoft\CredentialProvider.Microsoft.dll -I -V Verbose -U https://internalproget.server.com/nuget/Experimental/v3/index.json
[Verbose] [CredentialProvider]Handling auth request, Uri: https://internalproget.server.com/nuget/Experimental/v3/index.json, IsRetry: True, IsNonInteractive: False, CanShowDialog: False
[Verbose] [CredentialProvider]URI: https://internalproget.server.com/nuget/Experimental/v3/index.json
[Verbose] [CredentialProvider]Using NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider to try to get credentials for https://internalproget.server.com/nuget/Experimental/v3/index.json.
[Verbose] [CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - IsRetry: True
[Verbose] [CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Parsing json
[Verbose] [CredentialProvider]VstsBuildTaskServiceEndpointCredentialProvider - Found credentials for endpoint https://internalproget.server.com/nuget/Experimental/v3/index.json
[Information] [CredentialProvider]Username: username
[Information] [CredentialProvider]Password: password
Maybe I’m doing something wrong or maybe it’s not possible to use basic authentication. Can you maybe help me 😄 ?
Thank you
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 16 (8 by maintainers)
Glad it’s working for you (will still look at the script error though). Newer should be the default, the .NET Core 3.1 is out of support and we’ll be removing it from the code base in the coming weeks.
@sergey-litvinov-work I think your issue is different as it’s failing to successfully install the credential provider, can you open a new issue on this?