Authentication 什么是'--用户';带卷曲的平均值

Authentication 什么是'--用户';带卷曲的平均值,authentication,post,curl,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>" \

我正在使用一个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"}' \
     ...
curl-xpost-H“内容类型:application/json”\
--用户“:”\
-d'{“授权类型”:“客户端凭据”,“作用域”:“公共”}\
...

——curl中用于服务器身份验证的user
参数。所以,如果您不通过其他参数(如--digest或--negotiate)定义身份验证类型,这意味着http基本身份验证的用户参数,它还可以与:PASSWORD chunk组合来设置密码。您的问题的完整答案取决于您向其发送请求的API背后使用的身份验证类型,而curl可能还不够,因为它支持一组有限的身份验证方案…

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

如果curl请求没有任何--user,那么 需要身份验证的服务器发回401响应代码和相关的WWW Authenticate:头,该头列出了服务器支持的所有身份验证方法

< HTTP/1.1 401 
< WWW-Authenticate: Basic realm="oauth2/client"
然后您将知道服务器正在使用基本身份验证

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

有关更多信息,请参阅curl中的
--user
(或
-u
)为您的请求提供基本身份验证

在“邮递员”中,您可以通过在“授权”选项卡中进行选择来实现相同的结果

--user:“
变成

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

晚会迟到了,但是

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

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
Basic
关键字后的文本是与
--user
参数一起提供的用户名:密码组合的base64编码文本字符串

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

echo -n "username:password" | base64 -w0
对于windows,将“用户名:密码”保存到文件中,然后使用certutil.exe创建base64编码文件:

certutil -encode credentials.txt credentials.asc
要进行端到端测试,您可以删除
--用户用户名:密码
并替换为
--头授权:Basic YWxhZGRpbjpvcGVuc2VzYW1l
,它仍然可以进行身份验证


总之,要在不使用curl的情况下手动执行此操作,您需要base64编码
username:password
组合。然后,您需要将HTTP
Authorization
头与base64编码字符串一起设置为
Basic

作为Jahmic答案的补充,Nodejs程序员可以执行以下操作以转换为base64字符串:

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

那么,如果不使用curl,我将如何做到这一点呢。它是否进入header对象的内部?我尝试将client_id和client_secret设置为标头中的键和值。我尝试将密钥设置为“Authorization”,值设置为:(当然是实际的id和secret)。不走运。那么我如何在文本编辑器中使用它呢?实际上,如何在不使用CURL的情况下使用它呢。这些答案都不能回答。4年过去了。。。这仍然是一个有用的问题,但没有人正确回答。1)你不应该接受不合标准的答案2)你的评论是问题中非常有用的一部分,应该是一个编辑。Jahmic下面的答案更好。这是真正的答案。谢谢你的回答。这正是我一直在寻找的。对于像我这样的傻瓜,请删除
echo-n“username:password”
中的双引号,除非你真的想将它们包含在用户名或密码中。这正好回答了问题的答案。在Spring OAuth2 security中,我将使用
curl-u…
为gran类型的“client\u crendentials”获取一个令牌,以获取访问令牌,它与正在查找
身份验证:Basic…
,以下代码段的代码一起工作,
@Override protected void dofilternal(HttpServletRequest请求,HttpServletResponse响应,FilterChain)抛出IOException,ServletException{final boolean debug=this.logger.isDebugEnabled();String header=request.getHeader(“授权”);
我不明白为什么这个信息没有列在
man--pager='less-p^+-u,--user”下面'curl
?回答得好!虽然这可能对未来的访客有用,但与邮递员无关。