curl的基本授权命令

时间:2013-12-27 15:36:16

标签: curl

如何使用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  

5 个答案:

答案 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

示例1-使用-H

您可以像这样将它们放到curl中:

$ curl -H "Authorization: Basic $(base64 <<<"joeuser:secretpass")" http://example.com

示例2-使用-u

大多数人可能会同意,如果您打算这样做,那么最好也使用curl的{​​{1}}选项。

-u

例如:

$ curl --help |grep -- "--user "
 -u, --user USER[:PASSWORD]  Server user and password

但是,如果将凭据保存在LastPassPass之类的加密保管库服务中,则可以采用半安全的方式进行此操作。

例如,这里我使用LastPass的CLI工具$ curl -u someuser:secretpass http://example.com 来检索我的凭据:

lpass

示例3-使用curl配置

不过,还有一种更安全的方式将您的凭据交给$ 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基本授权

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

  

当用户代理想要将身份验证凭据发送到   服务器,则可以使用“授权”字段。

     

授权字段的构造如下:

     
      
  1. 用户名和密码用单个冒号(:)组合。   这意味着用户名本身不能包含冒号。
  2.   
  3. 结果字符串被编码为一个八位字节序列。字符集   默认情况下,未指定用于此编码的方式,因为   只要它与US-ASCII兼容,但服务器可能会建议使用   发送charset参数以获取UTF-8的信息。
  4.   
  5. 结果字符串使用Base64的变体进行编码。
  6.   
  7. 然后将授权方法和空格(例如“ Basic”)添加到   编码的字符串。
  8.   
     

例如,如果浏览器使用Aladdin作为用户名,   使用OpenSesame作为密码,则该字段的值为   Aladdin:OpenSesame或QWxhZGRpbjpPcGVuU2VzYW11l的base64编码。   然后,授权标头将显示为:

     

授权:基本QWxhZGRpbjpPcGVuU2VzYW1l

来源:Basic access authentication

答案 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