Inedo Community Forums Forums
    • Recent
    • Tags
    • Popular
    • Login

    Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

    If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

    PyPI connector to Azure Artifacts returns 401, same URL and PAT work with curl

    Scheduled Pinned Locked Moved Support
    6 Posts 2 Posters 17 Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      carl.westman_8110
      last edited by

      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 :)

      ProGet 2026.11 (Build 19), Basic Edition. PyPI feed with a connector to an Azure Artifacts PyPI feed:

      • Connector URL: https://pkgs.dev.azure.com/<org>/_packaging/<feed>/pypi (simple path left at the default simple/)
      • Authentication: Basic, user name azure, password = Azure DevOps PAT with Packaging (Read)

      Requesting a package through the ProGet feed returns "Package not found", and the Diagnostic Center logs:

      Connector error: The remote server returned an error: (401) Unauthorized.
      System.Net.WebException ... at Inedo.ProGet.Feeds.Pypi.PypiConnector.GetSimpleProjectDetailAsync(String projectName, ...) PypiConnector.cs:line 102

      The same request from the ProGet host's network with curl succeeds: curl -u azure:<PAT> https://pkgs.dev.azure.com/<org>/_packaging/<feed>/pypi/simple/<package>/ 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?

      Cheers
      Carl

      https://github.com/Wesztman

      rhessingerR 1 Reply Last reply Reply Quote 0
      • rhessingerR Offline
        rhessinger inedo-engineer @carl.westman_8110
        last edited by

        Hi @carl.westman_8110,

        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.

        As a work around, have you tried importing those packages into your ProGet feed? You can do that by using Import Package -> Download Package from Another Source. That will allow you to import all the packages and version from your ADO artifact feed.

        Thanks,
        Rich

        Products Engineer, Inedo

        C 1 Reply Last reply Reply Quote 0
        • C Offline
          carl.westman_8110 @rhessinger
          last edited by carl.westman_8110

          Thanks @rhessinger

          We've imported the packages in the meantime, so we're not blocked.

          For reference, the Azure side answers our requests fine, including with Accept: application/vnd.pypi.simple.v1+json, where the JSON contains the files list with url and hashes.sha256 for every file.

          Cheers
          Carl

          https://github.com/Wesztman

          rhessingerR 1 Reply Last reply Reply Quote 0
          • rhessingerR Offline
            rhessinger inedo-engineer @carl.westman_8110
            last edited by rhessinger

            Hi @carl.westman_8110,

            I did a little more digging. The actual issue was that the Azure Simple API was including extra information in the response Content Type. That triggered our connector to switch to the old HTML based parsing, which prevented the files from being found. I have corrected this in PG-3399, which is due out October 16, 2026 in ProGet 2026.13.

            Thanks,
            Rich

            Products Engineer, Inedo

            C 1 Reply Last reply Reply Quote 0
            • C Offline
              carl.westman_8110 @rhessinger
              last edited by

              Thanks @rhessinger for the quick response and quick fix! One of the many reasons we choose Proget 😁

              https://github.com/Wesztman

              rhessingerR 1 Reply Last reply Reply Quote 0
              • rhessingerR Offline
                rhessinger inedo-engineer @carl.westman_8110
                last edited by

                Hi @carl.westman_8110,

                Always happy to help! I have actually already made the fix internally. If you would like, I can provide a pre-release build of ProGet 2026.13 that includes the fix.

                Thanks,
                Rich

                Products Engineer, Inedo

                1 Reply Last reply Reply Quote 0

                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                With your input, this post could be even better 💗

                Register Login
                • 1 / 1
                • First post
                  Last post
                Inedo Website Home • Support Home • Code of Conduct • Forums Guide • Documentation