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”)是认证方案
头
“头部”HTTP认证方案并不是一个认证方案。它更像是传递任何自由格式的HTTP头(带秘密或不带秘密)的方法。
{
"provider": "header",
"name": "X-Extra-Key",
"value": "k3y"
}
其中
name 是要使用的HTTP头部名称
value 是要传递的HTTP头部值
多个
即使在这个插件中,这也是一个假认证方案。它不做任何认证,但可以同时链接和应用一个或多个提供者。这可能是您(可能)永远不会使用的东西。
{
"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命令
系统
系统提供者,正如其名所示,使用您的系统密钥链来从其中提取机密。它可能是 KWallet、GNOME密钥环、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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c649140323a712212ebd4b7bc92fc762ae400cff56c5cc8b791f5244830ef1a1 |
|
MD5 | ac67ed2b7bb2a3041d4737fc0b2eca89 |
|
BLAKE2b-256 | 16e3f97af71455ecf2418c33496389a12756999877a87b49f15405d49ce18d78 |
httpie_credential_store-3.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 16b5795b2942cc671f5fc96e47297862ec0c6e28445859fe8a80515a926f6cd3 |
|
MD5 | fd6b3837ae34931ded1141e4c8b1eced |
|
BLAKE2b-256 | 35889cd816c29e2b45b181b794de013bef200c5546d0a4e414e439703c7e81b7 |