Skip to content

Unable to authenticate with private index when providing username and credentials in keyring with SecretService #8634

Open
@EpicWink

Description

@EpicWink

I am unable to use a private index using credentials stored in my keyring if I explicitly provide the username in the index URL. This seems to be an issue specifically with SecretService keyring back-end, and with keyring v19.2 and above (Ubuntu 20.04 ships with keyring 18.0.1). In addition, everything works fine if I don't specify the username in the index URL (and of course, it works fine if I pass username and password in the index URL).

It seems as if keyring returns a credentials object regardless of whether it found a matching entry and a truthy password, as opposed to the default behaviour of returning a falsy if the password is falsy, in keyring.get_credential.

Environment

  • pip version: 20.1.1
  • Python version: 3.8.2
  • OS: Ubuntu 20.04.1
  • keyring: 21.2.1

$ keyring --list-backends

keyring.backends.chainer.ChainerBackend (priority: -10)
keyring.backends.fail.Keyring (priority: 0)
keyring.backends.SecretService.Keyring (priority: 5)

Reproduction

Store username and password in keyring for index hostname

echo pass | keyring set pypi.myorg.com user

Attempt to download a package, providing the username in the index URL

pip3 install myorg-mypackage --extra-index-url https://[email protected]/

Output

ERROR: Could not find a version that satisfies the requirement myorg-mypackage (from versions: none)
ERROR: No matching distribution found for myorg-mypackage

Metadata

Metadata

Assignees

No one assigned

    Labels

    C: keyringRelated to pip's keyring integrationS: needs triageIssues/PRs that need to be triaged

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions