<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[PyPI connector to Azure Artifacts returns 401, same URL and PAT work with curl]]></title><description><![CDATA[<p dir="auto">Hi there! I have some problems hooking up our Azure Artifacts pypi feed to Proget for a smooth transition from Azure Artifacts to Proget, wonder if you have some input :)</p>
<p dir="auto">ProGet 2026.11 (Build 19), Basic Edition. PyPI feed with a connector to an Azure Artifacts PyPI feed:</p>
<ul>
<li>Connector URL: <a href="https://pkgs.dev.azure.com/" rel="nofollow ugc">https://pkgs.dev.azure.com/</a>&lt;org&gt;/_packaging/&lt;feed&gt;/pypi (simple path left at the default simple/)</li>
<li>Authentication: Basic, user name azure, password = Azure DevOps PAT with Packaging (Read)</li>
</ul>
<p dir="auto">Requesting a package through the ProGet feed returns "Package not found", and the Diagnostic Center logs:</p>
<blockquote>
<p dir="auto">Connector error: The remote server returned an error: (401) Unauthorized.<br />
System.Net.WebException ... at Inedo.ProGet.Feeds.Pypi.PypiConnector.GetSimpleProjectDetailAsync(String projectName, ...) PypiConnector.cs:line 102</p>
</blockquote>
<p dir="auto">The same request from the ProGet host's network with curl succeeds: curl -u azure:&lt;PAT&gt; <a href="https://pkgs.dev.azure.com/" rel="nofollow ugc">https://pkgs.dev.azure.com/</a>&lt;org&gt;/_packaging/&lt;feed&gt;/pypi/simple/&lt;package&gt;/ returns 200, for both the HTML and the application/vnd.pypi.simple.v1+json Accept header. With a valid PAT Azure returns 404 for wrong paths, so the 401 means the connector's credentials are not accepted. Re-entering the password in the UI and via the management API makes no difference. Azure's 401 challenge lists three schemes in this order: WWW-Authenticate: Bearer authorization_uri=..., Basic realm="...", TFS-Federated. Is it possible the Basic credentials are only sent after a challenge and the Bearer entry is picked instead? Is there a way to make the PyPI connector send Basic credentials preemptively?</p>
<p dir="auto">Cheers<br />
Carl</p>
]]></description><link>https://forums.inedo.com/topic/5850/pypi-connector-to-azure-artifacts-returns-401-same-url-and-pat-work-with-curl</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 23:04:44 GMT</lastBuildDate><atom:link href="https://forums.inedo.com/topic/5850.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Oct 2026 11:03:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to PyPI connector to Azure Artifacts returns 401, same URL and PAT work with curl on Mon, 05 Oct 2026 17:34:51 GMT]]></title><description><![CDATA[<p dir="auto">Hi <a class="plugin-mentions-user plugin-mentions-a" href="/user/carl.westman_8110" aria-label="Profile: carl.westman_8110">@<bdi>carl.westman_8110</bdi></a>,</p>
<p dir="auto">I ran a test against our test Dev Ops instance.  I created a connector and I used basic authentication with my Microsoft account username (my email) as the username and the PAT as the password.  I found it was finding my package, but ADO's simple API was not returning the file list which is causing our connector to skip over it.  We are currently investigating this further.</p>
<p dir="auto">As a work around, have you tried importing those packages into your ProGet feed?  You can do that by using Import Package -&gt; Download Package from Another Source.  That will allow you to import all the packages and version from your ADO artifact feed.</p>
<p dir="auto">Thanks,<br />
Rich</p>
]]></description><link>https://forums.inedo.com/post/20109</link><guid isPermaLink="true">https://forums.inedo.com/post/20109</guid><dc:creator><![CDATA[rhessinger]]></dc:creator><pubDate>Mon, 05 Oct 2026 17:34:51 GMT</pubDate></item></channel></rss>