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文件: bindings
和 secrets
。
{
"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"
}
组合认证
“组合”认证类型也不是一个认证类型。它是一种同时使用多个认证类型的方式。当除了 basic
或 bearer
认证外,您还需要通过自定义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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2d1b3ddb03600658b7d1e202aa2d63bf5f7572686994294063b3a02bea471ea0 |
|
MD5 | e79a66bf196212bf73407fb0fd111f64 |
|
BLAKE2b-256 | 8f6532fcb4959c8acac54dadb7a3f399907b374732a19d827d52c667e1703a22 |
httpie_auth_store-4.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9d2be0284ace8fa286042e3142d5f968d0c083783e49454908e021ca19c0a8b4 |
|
MD5 | 35df95ec677cc34b61100998786e0c14 |
|
BLAKE2b-256 | 45551e5d0847a36830ea624eb9805662a75cc594dc8008cc98412abaf602dae8 |