如何使用PouchDB安全连接到Cloudant?
我正在使用Cordova / PhoneGap为Android和iOS创建移动应用程序,并使用IBM的Cloudant数据库进行存储。 我正在使用PouchDB javascript库来访问Cloudant数据库。 目前我有这个代码来访问它…
db = new PouchDB('https://[myaccount].cloudant.com/[mydb]', { auth: { username: 'myusername', password: 'mypassword' } });
我知道这是非常不安全的,我想知道是否有更安全的方式从应用程序内连接到我的数据库?
您可能想要考虑的一个选项是实施一项服务(例如,在云中运行),以便注册您应用的新用户。 注册逻辑可能如下所示:
- 手机代码与您的应用程序服务通信,请求注册用户
- 该服务调用Cloudant创建一个API密钥 ,该密钥将返回到手机代码
- 手机代码会在设备上保存API密钥“用户名”和“密码”。 然后在
auth: { username: 'myusername', password: 'mypassword' }
对象中使用这些凭据。
你是对的,Cloudant凭证永远不应该硬编码到你的客户端应用程序中。
一种设计模式是使用“每用户一个数据库”方法:
- 用户使用具有Cloudant管理员凭据的您的Web应用进行身份validation
- 该应用程序为经过身份validation的用户创建数据库,并使用
_reader
和_writer
访问权限创建Cloudant API密钥( https://docs.cloudant.com/api.html#authorization ) - 应用程序将此凭据与客户端进行通信(它们可以存储在“本地”PouchDB文档中,或者如果您希望用户每次都进行身份validation,则只存储在内存中)