跳转到主要内容

HTTPie:一证统治所有!

项目描述

HTTPie凭证存储是一个HTTPie身份验证插件,它使用给定的URL查找凭证并将其附加到正在进行的HTTP请求中。也就是说,你不再需要记住和/或查找令牌/用户名/密码。只需将它们添加到凭证存储中,其余的将由该插件为你完成。不言而喻,此插件支持各种安全的密钥存储,如系统密钥链或密码管理器(请参阅密钥链提供者)。

渴望开始吗?只需开始安装!

$ python3 -m pip install httpie-credential-store

用法

安装后,插件将在凭证文件中查找凭证。凭证文件存储在HTTPie配置目录中。因此,在Linux/macOS上,它将查找 ~/.httpie/credentials.json,而在Windows上则为 %APPDATA%\httpie\credentials.json。凭证文件不会为你创建,你必须完全负责创建一个。

本质上,凭证文件是一个凭证记录的JSON数组。每个凭证记录由以下属性组成

  • url必需)是一个正则表达式模式,用于将凭证记录映射到当前的HTTP请求。也就是说,如果正则表达式匹配当前HTTP请求的URL,则必须附加匹配记录的凭证。

  • auth必需)是为特定记录使用的认证提供者。如果记录匹配,则将使用提供者将凭证附加到当前HTTP请求。

  • id可选)是凭证记录的唯一标识符,可用于解决两个或多个匹配凭证记录之间的歧义。通过使用 id,可以实现对同一服务的多个账户的支持。

示例

[
  {
    "url": "api.github.com",
    "auth": {
      "provider": "token",
      "token": "your-github-oauth-token",
      "scheme": "token"
    }
  },
  {
    "id": "bots",
    "url": "api.github.com",
    "auth": {
      "provider": "token",
      "token": "bots-github-oauth-token",
      "scheme": "token"
    }
  }
]

上述示例假设您在凭证文件中未加密地存储您的机密。尽管强制您为凭证文件设置唯一的访问权限,但它并不安全,因此不建议使用。HTTPie凭证存储插件可以从密码管理器或系统密钥链中提取机密和其他敏感信息。例如,您可以使用以下凭证记录从密码存储库提取您的令牌

[
  {
    "url": "api.github.com",
    "auth": {
      "provider": "token",
      "scheme": "token",
      "token": {
        "keychain": "password-store",
        "name": "github.com/ikalnytskyi/token"
      }
    }
  }
]

一旦凭证存储被填满,您就可以随意使用插件。为了激活插件,您必须将 -A creds-A credential-store 传递给 http 可执行文件。

$ http -A creds https://api.github.com

可选地,您可以通过传递 -a 参数来提供要使用的凭证记录的ID。

$ http -A creds -a bots https://api.github.com

认证提供者

HTTPie凭证存储附带以下认证提供者。

基本

RFC 7617中定义的“基本”HTTP认证方案。通过Base64编码将凭据作为用户名/密码对传输。

{
  "provider": "basic",
  "username": "ikalnytskyi",
  "password": "p@ss"
}

其中

  • username 是用于认证的用户名

  • password 是认证用户的密码

摘要

RFC 2617中定义的“摘要”HTTP认证方案。它在将用户名和密码发送到网络之前,先对它们应用哈希函数。

{
  "provider": "digest",
  "username": "ikalnytskyi",
  "password": "p@ss"
}

其中

  • username 是用于认证的用户名

  • password 是认证用户的密码

令牌

“令牌”HTTP认证方案(也称为“Bearer”)在 Authorization HTTP头中传输令牌。

{
  "provider": "token",
  "token": "t0k3n",
  "scheme": "JWT"
}

其中

  • token 是认证用户的令牌

  • scheme (可选,默认值:“Bearer”)是认证方案

多个

即使在这个插件中,这也是一个假认证方案。它不做任何认证,但可以同时链接和应用一个或多个提供者。这可能是您(可能)永远不会使用的东西。

{
  "provider": "multiple",
  "providers": [
    {
      "provider": "token",
      "token": "t0k3n"
    },
    {
      "provider": "header",
      "name": "X-Extra-Key",
      "value": "k3y"
    }
  ]
}

其中

  • providers 是同时使用的认证提供者列表

密钥链提供者

插件支持一系列密钥链,可以从安全存储中提取机密。

shell

Shell提供者不过是执行的一个简单shell命令。命令必须通过标准输出流将秘密返回给插件。这是一个通用的方法,可以用来将各种不受支持的密码管理器和/或密钥链连接起来。

示例

{
  "keychain": "shell",
  "command": "cat ~/path/to/secret | tr -d '\n'"
}

其中

  • command 是要执行的shell命令

系统

系统提供者,正如其名所示,使用您的系统密钥链来从其中提取机密。它可能是 KWalletGNOME密钥环macOS密钥链 或甚至是 Windows凭证存储库

示例

{
  "keychain": "system",
  "service": "github",
  "username": "ikalnytskyi"
}

其中

  • service 是要提取数据的系统

  • username 是用于提取数据的该服务的用户名

password-store

密码存储提供商是本插件与密码存储之间的桥梁。它会在您的系统上调用pass,并从存储记录的第一行(通常是密码)中提取秘密。

示例

{
  "keychain": "password-store",
  "name": "github.com/ikalnytskyi"
}

其中

  • name是密码存储中的pass名称

常见问题解答

  • :如何了解哪些凭据已附加到请求中?

    :遗憾的是,由于凭据绑定较晚,无法通过运行http --debug命令来了解使用了哪些凭据。尽管如此,可以通过传递-v参数到HTTPie来检查认证提供者所做的更改,以检查请求中传输的HTTP头:http -v

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

httpie_credential_store-3.1.0.tar.gz (6.5 kB 查看哈希值)

上传时间

构建分布

httpie_credential_store-3.1.0-py3-none-any.whl (8.4 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面