gpt4 book ai didi

authentication - 安全客户端 couchApp/couchDB 用户身份验证

转载 作者:行者123 更新时间:2023-12-04 20:51:58 27 4
gpt4 key购买 nike

背景调查:

User Signup in Couchapp/CouchDB through jquery.couch.js or Otherwise

http://blog.couchbase.com/what%E2%80%99s-new-couchdb-10-%E2%80%94-part-4-security%E2%80%99n-stuff-users-authentication-authorisation-and-permissions

https://issues.apache.org/jira/browse/COUCHDB-1175 - 特别是“Ari Najarian”的帖子

问题:

解释我在上面发布的 SO 问题:

“基本上我想要一个注册表单,用于在 couchdb 中为 couchapp 注册一个帐户。这将需要在 couchdb _users 数据库中创建一个新用户,并创建一个新数据库,新用户分配数据库角色管理员。所有这些都需要服务器管理员凭据。”

上一个问题的答案涉及使用以管理员身份登录到 couchdb 的外部单独服务器来监视 couchdb 并根据需要修改 couchdb 以响应来自客户端的某些数据事件。

我的问题是——这是唯一的方法吗?这不是破坏了 couchdb 的 2 层网络堆栈的全部目的吗?是否有某种方法可以从验证函数中修改 couchdb 数据库,该函数在“内部”/单独以管理员身份登录时检查“type == user”文档?

如果有一些直接的方法可以做到这一点,我很抱歉,我只是没有找到正确的文档。

额外问题说明:

  • couchdb 实例位于 Internet 地址上。
  • 这个沙发数据库为随机客户端提供一个 html 页面和包含注册/登录表单的嵌入式 javascript 脚本。
  • 客户输入注册信息(姓名、密码)并提交
  • JS 脚本使用 XMLHttpRequest 对象打开到 couchdb 实例的连接并发送...问题!

  • 问题 #1 - 如果凭据存储在代码中(作为新用户数据库的验证发送),那么任何人都可以“查看 html 源代码”并接管数据库。

    -或者-

    问题 #2 - 如果未提供凭据并且请求是匿名发送的,那么将在 _users 数据库中创建一个新用户并发送成功回复消息。但是没有为用户创建新的数据库(并且不能没有管理员凭据),用户可以与之交互以用于特定于应用程序的目的(例如添加/删除数据)。并且 - 从上面的 couchbase 博客链接 - 如果您使用角色/名称保护您的数据库以防止匿名读者和验证功能以防止匿名写入,那么匿名用户帐户(例如,想要注册数据库空间以使用app) 不能做任何事情,因为出于明显的安全原因,匿名用户不能指定他们希望拥有的任何角色。这意味着拥有 -functional- 用户的唯一方法是事先以管理员身份创建用户帐户 + 关联数据库,然后分发这些用户凭据 - 就像私有(private)邀请系统一样,是吗?

    重申一下,有没有什么办法,只使用 couchdb 和 couchdb 的身份验证处理程序、设计文档功能、客户端 ajax 等的某种组合,让连接的客户端注册并获取他们拥有的个人数据库(显然只有那个数据库)访问并可以与之交互?

    最佳答案

    This不是纯沙发解决方案,而是沙发 + 节点,可以解决您的问题:

    嗨,我有一段时间没来了,也没有意识到这是被编辑/删除的链接(加上链接不是答案的政策!对不起......)。我一直在一个与您尝试做的非常相似的项目上使用 couchdb,不幸的是,如果不使用其他服务来处理管理员级别的访问和用户数据库的创建,就无法完成您想要完成的工作。 Syncpoint-API 可以用来促进这一点,但它实际上是一个处理注册/登录和专用数据库设置的 nodejs 服务。

    尽管如此,到目前为止,Syncpoint 已被证明不是 100% 可靠的,而且它似乎确实是一个废弃的项目,因为 CouchBase 从 CouchDB 开发人员那里吸走了所有的研发资源。

    我现在转移到 nodejs + socket.io 作为传输层,使用 node 握手并分配一个 DB,然后进一步观察服务器上的沙发 _changes api(通过另一个节点进程),然后通过套接字转发 _changes。 io到客户端。我还运行了一些“纯”couchapps,它们提供与私有(private)数据混合的公共(public)数据。

    我的结论? CouchDB 是一个很棒的产品并且有一些很棒的特性,但是对于更复杂的登录/授权方案和实际开发中所需的其他一般应用程序需求,它还没有准备好。

    关于authentication - 安全客户端 couchApp/couchDB 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491553/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com