我打算构建办公室扩展应用程序(或多或少是一个HTML5应用程序)。应用程序中最有价值的部分是应用程序提供的内容,因此内容信息必须安全地保存在数据库中。任何试图访问内容的人都必须通过显示用户名和密码来证明自己的身份。
我有一个名为&#34的Cloudant数据库; _users"它存储所有用户的登录信息,例如用户名和密码,以及另一个名为" _contents"的Cloudant数据库。它存储所有内容信息。
当用户试图访问" _content"数据库与他们的网络浏览器,应用程序将要求用户登录。成功将此用户的凭据与" _users"中的数据匹配后数据库,此用户可以访问" _content"数据库中。
对我来说理想的情况是,登录和授权过程只能使用Web浏览器和Cloudant数据库完成。我不想让任何中间人(例如,运行nodejs的网络服务器)介于两者之间。我怎么能这样做。
好的,这是我无法解决的一些问题。
答案 0 :(得分:1)
通常,Cloudant不支持自定义用户名和密码,_users
数据库功能。相反,Cloudant允许您创建API密钥,这是随机字符串。
我认为,根据您的要求,上述系统将无效。但是有好消息! Cloudant也支持开源Apache CouchDB _users
数据库。我认为这对你有用;但是,您需要做一些工作才能进行设置。此解决方案要求您的Web服务器执行一些Cloudant准备工作;但是当用户使用该应用程序时,他们可以直接向Cloudant进行身份验证,他们可以直接读取和更新文档,而无需中间服务器。
请参阅Cloudant developer FAQ的最后一个问题,"我可以使用CouchDB安全功能......"
基本上,每个数据库的 ,你想要PUT到/the_db/_security
{ "couchdb_auth_only": true,
"members": {
"names": ["user_name_1", "user_name_2", "etc."],
"roles": []
}
}
这符合Apache CouchDB文档。基本上,您需要使用用户名和哈希密码在_users
中创建文档。 注意,Cloudant还没有更新的CouchDB功能,服务器会自动为您输入密码:Cloudant auth: lacks _users database
正如答案所述,请参阅CouchDB Wiki security page有关散列密码的信息。您需要找到JavaScript SHA1实现,例如CryptoJS
您可能需要启用CORS,这在Cloudant文档中也有描述,CORS chapter
完成上述所有操作后,您可以创建用户(或通过更新/_users/*
文档来更改其密码;这些用户可以使用基本身份验证或cookie身份验证登录,以访问其数据库。