如何使用64位编码凭据设置基本授权? 我尝试了两个命令,但没有用,请建议。
curl -i -H 'Accept:application/json' Authorization:Basic <username:password> http://example.com
curl -i -H 'Accept:application/json' Authorization:Basic.base64_encode(username:password) http://example.com
答案 0 :(得分:39)
如何设置基本授权?
您需要做的就是使用-u, --user USER[:PASSWORD]
。在幕后curl
为您构建带有base64编码凭据的Authorization
标头。
示例:
curl -u username:password -i -H 'Accept:application/json' http://example.com
答案 1 :(得分:24)
在授权之前再次使用-H
标题:基本内容。所以它将是
curl -i \
-H 'Accept:application/json' \
-H 'Authorization:Basic username:password' \
http://example.com
答案 2 :(得分:1)
您可以使用base64
CLI工具生成用户名+密码的base64编码版本,如下所示:
$ echo -n "joeuser:secretpass" | base64
am9ldXNlcjpzZWNyZXRwYXNz
-or-
$ base64 <<<"joeuser:secretpass"
am9ldXNlcjpzZWNyZXRwYXNzCg==
Base64是可逆的,因此您也可以解密它以确认:
$ echo -n "joeuser:secretpass" | base64 | base64 -D
joeuser:secretpass
-or-
$ base64 <<<"joeuser:secretpass" | base64 -D
joeuser:secretpass
注意::用户名= joeuser ,密码= secretpass
您可以像这样将它们放到curl
中:
$ curl -H "Authorization: Basic $(base64 <<<"joeuser:secretpass")" http://example.com
大多数人可能会同意,如果您打算这样做,那么最好也使用curl
的{{1}}选项。
-u
例如:
$ curl --help |grep -- "--user "
-u, --user USER[:PASSWORD] Server user and password
但是,如果将凭据保存在LastPass或Pass之类的加密保管库服务中,则可以采用半安全的方式进行此操作。
例如,这里我使用LastPass的CLI工具$ curl -u someuser:secretpass http://example.com
来检索我的凭据:
lpass
不过,还有一种更安全的方式将您的凭据交给$ curl -u $(lpass show --username example.com):$(lpass show --password example.com) \
http://example.com
。此方法利用了curl
开关。
-K
使用时,您的详细信息保持隐藏状态,因为它们是通过临时文件描述符传递给$ curl -X GET -K \
<(cat <<<"user = \"$(lpass show --username example.com):$(lpass show --password example.com)\"") \
http://example.com
的,例如:
curl
注意::上方,我正在与我们的Elasticsearch节点之一进行通信,询问集群的运行状况。
此方法是动态创建内容为+ curl -skK /dev/fd/63 -XGET -H 'Content-Type: application/json' https://es-data-01a.example.com:9200/_cat/health
++ cat
+++ lpass show --username example.com
+++ lpass show --password example.com
1561075296 00:01:36 rdu-es-01 green 9 6 2171 1085 0 0 0 0 - 100.0%
的文件,并将其提供给user = "<username>:<password>"
。
上面显示的方法促进了HTTP标准中一部分称为基本授权的功能。
当用户代理想要将身份验证凭据发送到 服务器,则可以使用“授权”字段。
授权字段的构造如下:
- 用户名和密码用单个冒号(:)组合。 这意味着用户名本身不能包含冒号。
- 结果字符串被编码为一个八位字节序列。字符集 默认情况下,未指定用于此编码的方式,因为 只要它与US-ASCII兼容,但服务器可能会建议使用 发送charset参数以获取UTF-8的信息。
- 结果字符串使用Base64的变体进行编码。
- 然后将授权方法和空格(例如“ Basic”)添加到 编码的字符串。
例如,如果浏览器使用Aladdin作为用户名, 使用OpenSesame作为密码,则该字段的值为 Aladdin:OpenSesame或QWxhZGRpbjpPcGVuU2VzYW11l的base64编码。 然后,授权标头将显示为:
授权:基本QWxhZGRpbjpPcGVuU2VzYW1l
答案 3 :(得分:0)
对于大型 Intranet,您可能需要 base64(域/用户:密码)。
答案 4 :(得分:-4)
卷曲-D- -X GET -H&#34;授权:基本ZnJlZDpmcmVk&#34; -H&#34; Content-Type:application / json&#34; http://localhost:7990/rest/api/1.0/projects
--note
base46 encode =ZnJlZDpmcmVk