【发布时间】:2016-10-28 23:42:23
【问题描述】:
我有两个 Rails 应用程序使用设计进行身份验证:一个网站和一个 API。尽管我是这两个应用程序的所有者,但出于多种原因,我希望将两者完全分离。当用户在网站上注册时,会在 API 端自动创建一个帐户。我遇到的最大问题是让两个应用程序之间的用户表保持同步。我最终在创建/更新 API 用户的网站用户模型上得到了一堆 RESTful API 回调。
第二部分是代表登录网站的用户调用 API。问题是我没有用户的解密密码,所以我可以进行 API 调用。所有 API 调用都使用基本的 HTTP 身份验证。密码被散列到数据库中,无法解密(这是一件好事,谢谢你的设计)。因为我在两个数据库之间保持所有用户列同步,所以我的网站用户 encrypted_password 列与我的 API 用户 encrypted_password 列相同。
那么,我有什么方法可以解决这个问题?我正在考虑修改 API,以便每个常规调用的管理员调用都需要一个管理员用户名和密码以及一个用户 ID(例如,获取该用户的交易)。或者,在两个应用程序之间实现一个共享数据库——但我在用户和其他模型之间有很多关联......索引如何工作?!或者,劫持设计身份验证并将 encrypted_password(来自我的网站)与 encrypted_password(来自我的 API)进行比较——因为它们完全相同;但这打开了蠕虫的安全罐。或者,创建密钥身份验证并为用户生成唯一的 GUID……但这与将解密密码存储在数据库中一样糟糕。我讨厌所有这些解决方案。也许有人有更好的主意?
【问题讨论】:
标签: ruby-on-rails devise restful-architecture