如何使用 PouchDB 安全地连接到 Cloudant?

How can I securely connect to Cloudant using PouchDB?

我正在使用 Cordova/PhoneGap 为 Android 和 iOS 创建移动应用程序,并使用 IBM 的 Cloudant 数据库进行存储。我正在使用 PouchDB javascript 库来访问 Cloudant 数据库。目前我有这个代码来访问它...

db = new PouchDB('https://[myaccount].cloudant.com/[mydb]', {
    auth: {
      username: 'myusername',
      password: 'mypassword'
    }
});

我知道这非常不安全,想知道是否有更安全的方法从应用程序内连接到我的数据库?

您可能想要考虑的一个选项是实施一项服务(例如 运行 在云中)以注册您的应用程序的新用户。注册逻辑可能如下所示:

  1. 手机代码与您的应用程序服务通信,请求用户注册
  2. 服务调用 Cloudant to create an API key 返回手机代码
  3. 手机密码保存在设备上的API键'username'和'password'。然后在 auth: { username: 'myusername', password: 'mypassword' } 对象中使用这些凭据。

Cloudant 凭据永远不应该硬编码到您的客户端应用程序中,您是对的。

一种设计模式是使用 "one database per user" 方法:

  • 用户使用您的具有 Cloudant 管理员凭据的 Web 应用程序进行身份验证
  • 该应用程序为经过身份验证的用户创建一个数据库,并创建具有 _reader_writer 访问权限的 Cloudant API 密钥 (https://docs.cloudant.com/api.html#authorization)
  • 应用程序将此凭据与客户端通信(它们可以存储在 'local' PouchDB 文档中,或者如果您希望用户每次都进行身份验证,则只存储在内存中)