我正在构建一个使用 CouchDB 作为后端数据库的 Web 应用程序。 一旦用户创建了一个帐户(即他们在_user
数据库中创建了一个文档(,我希望能够更改他们的角色以反映已完成的任务。 例如,当用户创建帐户时,将发送一封电子邮件,以便他们可以验证其电子邮件地址。 验证后,我想向用户添加一个verified
角色,以便他们才能写入他们的数据库(通过应用程序(。
我遇到的问题是只有管理员才能更改用户角色,因此据我所知,在某些时候自动执行此操作需要自动化过程使用管理员凭据。 我正在考虑在此线程中模拟解决方案并创建一个验证服务,该服务接收电子邮件验证并具有CouchDB数据库的管理员凭据。 然后,问题就变成了如何为此服务提供管理员凭据。
此线程似乎表明管理员凭据可以以明文形式存储在验证服务可访问的文件中(但不能用于其他任何内容(。 这感觉...危险。 但这可能只是我的偏执和对安全缺乏深刻理解的结合。
所以,有几个问题:
是否将管理员凭据保存在明文文件中 从安全角度来看,验证服务正常吗?
有没有另一种方法可以在没有的情况下更改用户角色 需要存储管理员凭据? 换句话说,有没有办法 做什么 这 线程建议并仅授予一些管理员权限(例如更改角色( 没有实际使用管理员?
如果有帮助,Web 应用程序、couchDB 和验证服务都在单独的 Docker 容器中运行,这些容器与docker-compose
联网,并且仅通过 NGINX 反向代理公开,也位于单独的容器中。
此外,由于各种原因,不涉及用户角色更改的解决方案在我的情况下不起作用。 我必须能够以用户角色跟踪verified
状态。
-
如果文件存储在服务器端并且公众无法访问,则它是安全的。(你不希望这个文件由你的NGINX或Apache服务器提供(
-
没有。
所以在我看来,你需要一个具有以下功能的"注册服务":
- 注册(身份验证较少(。任何人都可以注册
- 帐户确认(需要一些安全性(。也许,它需要一个令牌或类似的东西
这两个函数都使用"admin"帐户来执行操作,这是完全安全的。