curl的基本授权命令

curl的基本授权命令,curl,authorization,Curl,Authorization,如何使用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

如何使用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  
curl-i-H'Accept:application/json'Authorization:Basichttp://example.com
curl-i-H'Accept:application/json'Authorization:Basic.base64_encode(用户名:密码)http://example.com  

在授权前再次使用
-H
标题:基本事项。就这样吧

curl -i \
    -H 'Accept:application/json' \
    -H 'Authorization:Basic BASE64_string' \
    http://example.com
这里,
BASE64\u string
=BASE64 of
username:password

如何设置基本授权

您只需使用
-u,--user用户[:密码]
。幕后
curl
为您构建带有base64编码凭据的
授权

例如:

curl -u username:password -i -H 'Accept:application/json' http://example.com
curl-D--X GET-H“授权:基本ZnJlZDpmcmVk”-H“内容类型:application/json”

一种方法是,提供
--user
标志作为
curl
的一部分,如下所示:

curl --user username:password http://example.com
curl -i -H 'Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=' http://localhost:8080/
另一种方法是从任何在线网站获取“username:password”的编码令牌,如-并将其作为
curl
Authorization
标题传递,如下所示:

curl --user username:password http://example.com
curl -i -H 'Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=' http://localhost:8080/
这里,
dXNlcm5hbWU6cGFzc3dvcmQ=
Base64
username:password背景的编码标记 您可以使用
base64
CLI工具生成用户名+密码的base64编码版本,如下所示:

$ echo -n "joeuser:secretpass" | base64
am9ldXNlcjpzZWNyZXRwYXNz

-or-

$ base64 <<<"joeuser:secretpass"
am9ldXNlcjpzZWNyZXRwYXNzCg==
$ echo -n "joeuser:secretpass" | base64 | base64 -D
joeuser:secretpass

-or-

$ base64 <<<"joeuser:secretpass" | base64 -D
joeuser:secretpass
$ curl -H "Authorization: Basic $(base64 <<<"joeuser:secretpass")" http://example.com
示例#2-使用-u 大多数人可能会同意,如果您要费心这么做,那么您最好使用
curl
-u
选项

例如:

$ curl -u someuser:secretpass http://example.com
+ 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%       
但如果您将凭证保存在加密的vault服务(如或)中,则可以以半安全的方式执行此操作

例如,这里我使用LastPass的CLI工具,
lpass
,来检索我的凭据:

$ curl -u $(lpass show --username example.com):$(lpass show --password example.com) \
     http://example.com
示例#3-使用curl配置 不过,还有一种更安全的方法可以将您的凭证交给
curl
。此方法使用
-K
开关

$ curl -X GET -K \
    <(cat <<<"user = \"$(lpass show --username example.com):$(lpass show --password example.com)\"") \
    http://example.com
注意:上面我正在与我们的一个Elasticsearch节点通信,询问集群的运行状况

此方法动态创建一个包含
user=“:”
内容的文件,并将其交给
curl

HTTP基本授权 上面显示的方法促进了一种称为基本授权的功能,这是HTTP标准的一部分

当用户代理希望将身份验证凭据发送到 服务器,它可以使用授权字段

授权字段的构造如下所示:

curl --user username:password http://example.com
curl -i -H 'Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=' http://localhost:8080/
  • 用户名和密码由一个冒号(:)组合而成。 这意味着用户名本身不能包含冒号
  • 结果字符串被编码成八位字节序列。字符集 默认情况下,此编码的使用未指定,如下所示 只要它与US-ASCII兼容,但服务器可能建议使用 通过发送charset参数来实现UTF-8的
  • 生成的字符串使用Base64变量进行编码
  • 然后将授权方法和空格(例如“Basic”)添加到 编码字符串
  • 例如,如果浏览器使用阿拉丁作为用户名和 OpenSesame作为密码,则该字段的值为 阿拉丁的base64编码:OpenSesame,或QWXHZGRPPCGVu2VzyW1L。 然后,授权标题将显示为:

    授权:基本QWXHZGRPBJPCGVU2VZYW1L


    来源:

    在本例中,标题看起来像“Authorization:Basic base64(:)?我试图不理解的是“Basic”单词后面的符号的含义:),当然除了“username:password”“必须是base64编码,而不是像这里显示的那样简单…@DanielStenberg就是这个!这就是我的请求失败的原因,打得好。请正确设置代码格式并进行解释。感谢您提供base64编码令牌的信息,请不要使用在线网站对您的密码进行编码,伙计们。使用
    echo-n“password”| base64
    。您需要对这两个用户+pass进行编码:
    echo-n“username:password”| base64
    。只需稍加挑剔,但不解密base64字符串,它正在解码:)@pauliketunen-ty已修复。另外
    -w0
    应用于
    base64
    命令,以禁用换行。