我基本上有两个相关的问题。
在我的情况下,我有一个全局Mongo身份验证作为管理员密码传递。我按照BCryptAuth
中的描述实现了我的this answer,所以我可以创建没有任何身份验证的用户:
curl -d 'username="barack"' -d 'password="obama"' http://0.0.0.0:5000/users/?pretty
然后,我可以使用我的Mongo身份验证访问我的api,如下所示:
curl -u admin:pass http://0.0.0.0:5000/users/?pretty
但我无法使用任何新用户的凭据来获取任何数据。所以,请求
curl -u barack:obama http://0.0.0.0:5000/users/?pretty
不起作用。我总是得到401:
{
"_status": "ERR",
"_error": {
"code": 401,
"message": "Please provide proper credentials"
}
}
在this example中,在实现基本身份验证之后,请求如下:
curl -H "Authorization: Basic YWRtaW46c2VjcmV0" -i http://example.com
我不清楚Basic
关键字后面的令牌是什么。我也尝试在我的情况下使用这种格式,但没有任何作用。
那么,第一个问题是,作为具有BasicAuth密码obama的barack用户,请求的格式必须是什么?
此外,我正在尝试实施TokenAuth
。那么第二个问题是,令牌的请求格式是什么?
我找不到任何关于此的明确信息。
UPDATE
感谢@gcw,我想出了如何使用Authorization标头发出请求。
几言:
echo '<base64encodedstring>' | base64 -d
完成的。 -D
是macos选项。echo -n '<string>' | base64
完成。 -n
很重要 - 它会丢弃new line
字符,默认情况下包含在<string>
中。但我仍然无法使用我新创建的用户登录api。
Authorization标头必须具有base64格式的admin:pass
信息。如果你通过用echo "YWRtaW46c2VjcmV0" | base64 -D
解码它来检查YWRtaW46c2VjcmV0的内容,你可以看到它是admin:secret
。尝试使用base64格式的凭据来查看是否有效。此外,您可以使用Postman Basic Auth选项卡生成Authorization标头。
关于使用TokenAuth,您可以使用Bearer
而不是Basic
以base64格式传递令牌。这个答案here解释了有关不同HTTP身份验证方法的一些细节。