python-eve api的身份验证请求格式是什么?

问题描述 投票:2回答:1

我基本上有两个相关的问题。

在我的情况下,我有一个全局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标头发出请求。

几言:

  • linux上的Base64解码是用echo '<base64encodedstring>' | base64 -d完成的。 -D是macos选项。
  • Base64编码使用:echo -n '<string>' | base64完成。 -n很重要 - 它会丢弃new line字符,默认情况下包含在<string>中。

但我仍然无法使用我新创建的用户登录api。

mongodb python-3.x authentication token eve
1个回答
0
投票

Authorization标头必须具有base64格式的admin:pass信息。如果你通过用echo "YWRtaW46c2VjcmV0" | base64 -D解码它来检查YWRtaW46c2VjcmV0的内容,你可以看到它是admin:secret。尝试使用base64格式的凭据来查看是否有效。此外,您可以使用Postman Basic Auth选项卡生成Authorization标头。

关于使用TokenAuth,您可以使用Bearer而不是Basic以base64格式传递令牌。这个答案here解释了有关不同HTTP身份验证方法的一些细节。

© www.soinside.com 2019 - 2024. All rights reserved.