使用 CouchDB Android 进行用户身份验证
Posted
技术标签:
【中文标题】使用 CouchDB Android 进行用户身份验证【英文标题】:User Authentication using CouchDB Android 【发布时间】:2014-04-28 07:47:50 【问题描述】:我正在开发一个使用 couchDB 的应用程序。当用户打开应用程序时,它会提示他输入用户名和密码。
现在我的问题是如何检查 couchDB 中的用户身份验证,我的意思是如何检查用户是来自 couch 服务器的现有用户还是新用户。
在 CouchDB 中是否有任何安全的用户身份验证方式?
【问题讨论】:
【参考方案1】:我不同意 DHK 的回答:CouchDB _users
数据库是进行用户身份验证的好方法。您不是在代码中管理用户(这确实是一种不好的做法); CouchDB 处理所有密码加盐/散列/等。自动为你。您唯一需要添加的是 SSL (HTTPS),这样密码就不会以明文形式发送。这是一项功能,而不是错误,因为这就是 HTTPS 的设计目的。
我写了一个blog post about CouchDB,其中谈到了很多关于身份验证的内容,如果您只是想快速启动并运行,this rough draft of a PouchDB plugin 向您展示了如何使用 CouchDB 进行简单的注册/登录/注销操作(查看代码; 超级简单)。
该插件的工作方式与您在 android 上的工作方式之间的唯一区别是您不能使用 cookie。您将使用基本的 HTTP 身份验证 (https://user:password@mycouch.com:5984
),只要您使用 SSL,这同样可以。 CouchDB 有docs on SSL,或者你可以just put an nginx proxy in front of it(我的首选解决方案)。
【讨论】:
【参考方案2】:您确实不应该将 couchDB 用户用作您的应用程序中的用户。
在应用程序的代码中存储登录和数据库服务器详细信息也是不好的做法。
我会为你的 couchdb 设置一个 API,它可以屏蔽用户的任何密码,但除此之外是一个非常透明的 API,它只是通过视图/等传递到实际的 couchDB 实例。
用户必须针对此 API 进行身份验证,这可能会使用存储在您的 couchdb 中的一些“api 用户”数据来验证他们是真实的,如果不是,则拒绝请求。
【讨论】:
CouchDB 身份验证 API 多年来不断改进。以上是关于使用 CouchDB Android 进行用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章
couchdb - 将遗留身份验证模块集成到 couchapp