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

我正在使用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创建一个API密钥 ,该密钥将返回到手机代码
  3. 手机代码会在设备上保存API密钥“用户名”和“密码”。 然后在auth: { username: 'myusername', password: 'mypassword' }对象中使用这些凭据。

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

一种设计模式是使用“每用户一个数据库”方法:

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