' - user'对curl意味着什么

时间:2016-03-29 18:34:32

标签: authentication post curl

我正在使用API​​,我必须发送POST请求。我知道如何设置标题(-H)和(-d)是正文,但是什么是“--user”。

如果我使用Postman或带有axios的文本编辑器或只是常规的XMLRequest提交此文件,我在哪里添加它?

文档说它适用于常规的http身份验证。

curl -X POST -H "Content-Type: application/json" \
     --user "<client_id>:<client_secret>" \
     -d '{"grant_type": "client_credentials", "scope": "public"}' \
     ...

5 个答案:

答案 0 :(得分:15)

迟到了聚会,可是...

您可以将curl与-v(详细)参数一起使用,以查看发送的标题。然后,您将看到--user提供的信息被转换为标题,例如:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

Basic关键字之后的文本是--user参数提供的username:password组合的base64编码文本字符串

要在Linux上手动生成base64编码的凭据,只需调用:

echo -n "username:password" | base64 -w0

对于Windows,将“用户名:密码”保存到文件中,然后使用certutil.exe创建base64编码的文件:

certutil -encode credentials.txt credentials.asc

要测试此端到端,可以删除--user username:password并替换为--header Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l,它仍然可以进行身份​​验证。

要在不卷曲的情况下手动执行此操作,您需要对username:password组合进行base64编码。然后,您需要将HTTP Authorization标头设置为Basic,并设置base64编码的字符串。

答案 1 :(得分:8)

--user(或-u)中的curl可为您的请求提供基本的身份验证。

在Postman中,您可以通过在“授权”标签中进行选择来达到相同的结果。

--user "<client_id>:<client_secret>"变为

  • 类型:基本身份验证
  • 用户名:client_id
  • 密码:client_secret

enter image description here

答案 2 :(得分:7)

curl中的

--user参数用于服务器身份验证。因此,如果您不通过其他参数(例如--digest或--negotiate)定义身份验证类型,则表示用于http基本身份验证的USER参数,它也可以与:PASSWORD chunk结合使用以设置密码。您的问题的完整答案取决于您发送请求的API背后使用何种类型的身份验证,并且可能卷曲不够,因为它支持一组有限的身份验证方案......

答案 3 :(得分:3)

指定用于服务器身份验证的用户名和密码。如果您只是指定用户名,curl将提示输入密码。

如果你的curl请求没有任何用户,那么 需要身份验证的服务器会发回401响应代码和关联的WWW-Authenticate:标头,其中列出了服务器支持的所有身份验证方法。

< HTTP/1.1 401 
< WWW-Authenticate: Basic realm="oauth2/client"

然后您将知道服务器正在使用基本身份验证

您可以添加--basic以明确告知它是基本身份验证

有关详细信息,请参阅HTTP authentication

答案 4 :(得分:-1)

作为 Jahmic 答案的补充,Nodejs 程序员可以这样做以转换为 base64 字符串:

const cryptoJS = require("crypto-js");    
const base64Str = cryptoJS.enc.Base64.stringify(cryptoJS.enc.Utf8.parse(`${username}:${password}`))