【问题标题】:Unable to authenticate when accessing Cloudant using Api Key via pouchDB通过 pouchDB 使用 Api Key 访问 Cloudant 时无法进行身份验证
【发布时间】:2019-12-10 20:58:58
【问题描述】:

首先,我刚开始使用 cloudant,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止,我能找到的所有信息都来自几年前看似过时的 SO 帖子。

我设置了一项服务,该服务在我的资源列表中正确显示:

如果我点击该服务,我可以看到为它正确制作了服务凭据(信息已编辑):

{
  "apikey": "********************************************",
  "host": "******************-bluemix.cloudantnosqldb.appdomain.cloud",
  "url": "https://***********-bluemix.cloudantnosqldb.appdomain.cloud",
  "username": "***********-bluemix"
}

但是,当我尝试在 pouchDB 中使用以下代码访问这些凭据时:

let db = new PouchDB(userCredentials.url,  {
        auth: {
            username: 'userCredentials.username',
            password: 'userCredentials.apiKey'
        }
    });

我遇到了一个错误,它无法使用错误的用户名或密码进行身份验证。

我还尝试通过 IAM 管理部分并在那里使用服务凭证,确保我的凭证附加了 API 密钥。使用该方法时,我将身份验证对象设置为用户名:apikeyname,密码:实际键值。但每次,我仍然遇到相同的身份验证错误。

任何人的任何见解都会有很大帮助!一些注意事项,我确保 CORS 已启用,并且我将身份验证设置设置为 IAM only(旧版登录已禁用)

【问题讨论】:

    标签: pouchdb cloudant


    【解决方案1】:

    由于您已请求仅 IAM 身份验证帐户,因此您无法使用基本身份验证。不幸的是,在撰写本文时,PouchDB 中不支持 IAM。

    【讨论】:

    • 天哪,谢谢你,那会为我节省很多时间。所以我只需要允许旧版登录,然后按照相同的流程,但在某处寻找密码?
    • 如果您有旧版身份验证,则可以创建 api 密钥以供 PouchDB 使用。出于显而易见的原因,请勿使用 root 帐户凭据。
    • 我传递给 pouchDB 的 auth 对象会和上面的一样吗?旧的 api 密钥上只有密码?
    【解决方案2】:

    您要查找的密码是password,而不是apikey

    您可以使用带有用户名和密码的常规/基本身份验证,也可以使用 IAM API 密钥,但不能混合使用。

    【讨论】:

    • 好的,首先,我想我需要再次允许旧版身份验证。一旦我这样做了,这个密码会开始出现在某个地方吗?目前,我在尝试设置这些凭据时从未在任何地方提供密码
    • 只需点击按钮即可打开 Cloudant 仪表板。然后转到您的数据库的权限位并创建一个 api 密钥
    猜你喜欢
    • 2015-09-15
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2012-04-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多