跳转到主要内容

HTTPie:一个认证统治一切!

项目描述

HTTPie Auth Store

[!NOTE]

由于向后不兼容的更改,该插件已从 httpie-credential-store 重命名为 httpie-auth-store,主要是因为新名称更能反映其本质。

HTTPie Auth Store 是一个 HTTPie 认证插件,它自动从包含认证绑定的文件中选取适当的认证类型和有效负载,然后将其用于当前请求。不再需要记住或搜索令牌、用户名或密码 —— 只需将它们添加到认证存储中,插件即可处理其余部分。此插件还支持各种秘密存储选项,例如系统密钥链和密码管理器(请参阅支持的 秘密提供者)。

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

httpie cli plugins install httpie-auth-store

或通过在安装了HTTPie的相同Python环境中使用 pip

python3 -m pip install httpie-auth-store

目录

用法

[!IMPORTANT]

不要忘记将 -A store--auth-type store 传递给HTTPie以激活插件。

安装后,插件会在HTTPie配置目录中寻找 auth_store.json 文件。在macOS和Linux上,它会尝试以下位置: $HTTPIE_CONFIG_DIR/auth_store.json$HOME/.httpie/auth_store.json$XDG_CONFIG_HOME/httpie/auth_store.json;在Windows上则是 %HTTPIE_CONFIG_DIR%\auth_store.json%APPDATA%\httpie\auth_store.json

[!NOTE]

在首次激活插件时,认证存储可以自动创建,其中包含一些示例,例如 http -A store https://pie.dev

认证存储是一个包含两个部分的JSON文件: bindingssecrets

{
  "bindings": [
    {
      "auth_type": "bearer",
      "auth": "$GITHUB_TOKEN",
      "resources": ["https://api.github.com/"]
    },
    {
      "id": "bots",
      "auth_type": "bearer",
      "auth": "ZWFzdGVyIGVnZwo",
      "resources": ["https://api.github.com/"]
    },
  ],
  "secrets": {
    "GITHUB_TOKEN": {
      "provider": "system",
      "service": "github.com",
      "username": "ikalnytskyi"
    }
  }
}

每个 binding 都是一个包含以下键的JSON对象

  • id (str, optional) 是一个认证绑定ID,可以在两个或多个绑定匹配时消除歧义。

  • auth_type (str, required) 是HTTPie支持的认证类型,无论是原生的还是第三方插件提供的。有关详细信息,请参阅 认证类型

  • auth (str, optional) 是给定认证类型的认证有效负载。对于某些认证类型是必需的,对于其他类型则是可选的。以 $ 开头的令牌将被替换为那些令牌所引用的秘密。 $ 符号必须转义($$)以保持不变。

  • resources (List[str], required) 是一个包含URLs的数组,用于激活此绑定。必须包含方案和主机名。

每个 secret 是一个键值对,其中键是秘密名称,值是秘密本身或一个JSON对象,指定如何从安全存储中检索秘密。JSON对象必须包含 provider 键。其他键的存在取决于提供者(请参阅下文的 秘密提供者 部分)。

一旦设置了认证存储,只需将 -A store 传递给HTTPie以激活插件并为您执行一些魔法。

http -A store https://api.github.com

如果存储中有两个或多个匹配同一资源的认证绑定,您可以通过传递 -a--auth 给HTTPie来选择合适的绑定。当您在同一个网络资源上有多个账户时,这可能很有用。

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

认证类型

HTTPie认证存储支持内置和第三方HTTPie认证类型,并提供一些自己的认证类型。

[!TIP]

建议您将秘密存储在密码管理器中,而不是直接存储在认证存储文件中。

基本认证

“基本”HTTP认证类型,如RFC 7617中定义。将凭证作为用户名/密码对传输,使用Base64编码。

{
  "auth_type": "basic",
  "auth": "ihor:p@ss"
}

其中

  • auth 是一个以 : 分隔的用户名/密码对

摘要认证

“摘要”HTTP认证类型,如RFC 2617中定义。在网络发送之前对用户名和密码应用哈希函数。

{
  "auth_type": "digest",
  "auth": "ihor:p@ss"
}

其中

  • auth 是一个以 : 分隔的用户名/密码对

Bearer认证

“Bearer”HTTP认证类型在 Authorization HTTP头中传输令牌。

{
  "auth_type": "bearer",
  "auth": "t0ken"
}

其中

  • auth 是用于认证的bearer令牌

头部认证

“Header”认证类型并不完全是一个认证方案。它是一种设置自由格式的HTTP头的方式,可能包含也可能不包含任何秘密材料。

{
  "auth_type": "header",
  "auth": "X-Secret:s3cret"
}

其中

  • auth 是一个以 : 分隔的HTTP头名/值对

“Header”认证类型可用于绕过内置或第三方认证类型强加的任何限制。例如,您可以传递一个非默认的认证方案,比如 JWT,而不用担心。

{
  "auth_type": "header",
  "auth": "Authorization:JWT t0ken"
}

组合认证

“组合”认证类型也不是一个认证类型。它是一种同时使用多个认证类型的方式。当除了 basicbearer 认证外,您还需要通过自定义HTTP头提供额外的秘密时,这可能很有用。

{
  "auth_type": "composite",
  "auth": [
    {
      "auth_type": "bearer",
      "auth": "t0ken"
    },
    {
      "auth_type": "header",
      "auth": "X-Secret:s3cret"
    }
  ]
}

其中

  • auth 是HTTPie支持的认证条目列表

HMAC认证

“HMAC”身份验证类型不是内置的,需要首先安装httpie-hmac插件。在这里,它的唯一目的是作为一个示例,展示如何在身份验证存储中使用第三方身份验证类型。

{
 "auth_type": "hmac",
 "auth": "secret:czNjcjN0Cg=="
}

其中

  • auth是一个HMAC特定的身份验证有效负载

秘密提供者

插件支持一些秘密提供者,可以从各种安全存储中检索令牌、密码和其他秘密材料。

sh

“Sh”秘密提供者从shell脚本的标准化输出中检索秘密。这是一种通用的方法,可用于通过它们的命令行界面从不受支持的密码管理器中检索秘密。

{
  "provider": "sh",
  "script": "cat ~/path/to/secret | tr -d '\n'"
}

其中

  • script是要执行的shell脚本

系统

如名称所示,“系统”秘密提供者从您的系统密钥链中检索秘密。它可能是KWallet、GNOME密钥环、macOS密钥链甚至是Windows凭证保管库。

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

其中

  • service是要从中检索秘密的服务
  • username是要从中检索秘密的用户名

password-store

“密码存储”秘密提供者调用您的系统上的pass可执行文件,并从引用记录的第一行中检索秘密。

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

其中

  • name是要从中检索秘密的密码存储条目名称

常见问题解答

  • :如何了解给定请求使用哪种身份验证?

    :您可以使用带有--offline参数的HTTPie来打印请求头,同时打印注入的身份验证凭据。

项目详情


下载文件

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

源分发

httpie_auth_store-4.0.0.tar.gz (10.8 KB 查看哈希)

上传时间

构建分发

httpie_auth_store-4.0.0-py3-none-any.whl (9.5 kB 查看哈希)

上传时间 Python 3

由以下机构支持

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