在 Python-Eve 中设置 MongoDB 授权配置

Setting MongoDB authorization configuration in Python-Eve

我正在使用 Python-Eve 和一个启用了授权的 MongoDB 实例,所以我需要在 settings.py 中提供 user/pass 凭据以正确初始化 Python-夏娃API.

如果使用 MONGO_URI 全局配置设置,按照描述声明数据库端点 here 它工作正常:

MONGO_URI = 'mongodb://<someuser>:<somepass>@<host>/<auth_db>'

但如果我根据 Eve 文档尝试使用其他可能的方式,即在 settings.py 处声明,则每个部分或 URI 的单独设置,如下所示:

MONGO_HOST = <host>
MONGO_PORT = 27017
MONGO_DBNAME = <mongo_db>
MONGO_USERNAME = <someuser>
MONGO_PASSWORD = <somepass>
MONGO_AUTHDBNAME = <auth_db>

我收到如下错误:

pymongo.errors.OperationFailure: command SON([('saslStart', 1), ('mechanism', 'SCRAM-SHA-1'), ('autoAuthorize', 1), ('payload', Binary(b'n,,n=root,r=MzcxMTQ1MTM3MTExNDYwNg==', 0))]) on namespace testapp.$cmd failed: Authentication failed.

让它以这种方式工作缺少什么?

好的,我想出了让它工作的错误。用于检查凭据的身份验证数据库与 MONGO_DBNAME 相同,而不是 MONGO_AUTH_DBNAME 值。所以在我的示例中,用户必须存在于 <mongo_db> 数据库中,而不是像我期望的那样存在于 <auth_db> 中。

但是,MONGO_AUTHDBNAME设置的目的是什么?

MONGO_AUTHDBNAME 对于一些现已弃用的旧 MongoDB 身份验证方案很有用。有关详细信息,请参阅 original pull request discussion.