How can I securely connect to Cloudant using PouchDB?

人盡茶涼 提交于 2019-12-06 07:13:44

问题


I am creating a mobile app for Android and iOS using Cordova/PhoneGap and am using IBM's Cloudant database for storage. I am using the PouchDB javascript library to access the Cloudant database. Currently I have this code to access it...

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

I am aware that this is extremely insecure, and am wondering if there is a more secure way to connect to my database from within the app?


回答1:


One option you may like to consider is implementing a service (e.g. running in the cloud) for registering new users of your app. Registration logic could look something like this:

  1. The handset code communicates with your application service requesting registration of the user
  2. The service makes a call to Cloudant to create an API key which would is returned to the handset code
  3. The handset code saves the API key 'username' and 'password' on the device. These credentials are then use in the auth: { username: 'myusername', password: 'mypassword' } object.



回答2:


You are right that Cloudant credentials should never be hard-coded into your client-side app.

One design pattern is to use a "one database per user" approach:

  • the user authenticates with a web-app of yours that has Cloudant admin credentials
  • the app creates a database for the authenticated user and creates a Cloudant API Key with _reader & _writer access (https://docs.cloudant.com/api.html#authorization)
  • the app communicates this credentials with the client (where they could be stored in a 'local' PouchDB document, or just stored in memory if you want your users to authenticate every time)


来源:https://stackoverflow.com/questions/30416068/how-can-i-securely-connect-to-cloudant-using-pouchdb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!