gpt4 book ai didi

ruby-on-rails - rails : Microservice architecture with dedicated authorization service and app services using Knock (JWT)

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:11 24 4
gpt4 key购买 nike

我现在正尝试将整体式应用程序分离成微服务(专用 Rails 应用程序)并且想知道 - 是否有从每个服务中移动授权服务的解决方案?

例如,我有 6 个不同的 Rails API 服务,它们带有“敲门”gem,它们具有用于身份验证目的的用户模型。所有这些服务共享一个用户数据库。

我想用用户模型实现专用服务,但其他服务如何使用给定的 token 验证用户?

我还希望能够控制用户可以使用和不能使用的服务。那么应该有AccessRole服务吧?

草稿:

  1. 用户转到“文章”(前端 UI 客户端)
  2. auth_service 正在验证来自客户端的 token
  3. access_service 以某种方式从 auth_service 获取消息并验证用户角色以访问“文章”资源。
  4. articles_service 使用 json 数据向客户端发送响应。

这里还有一些问题:

  1. access_service 如何与 auth_service 通信?他们应该使用一个用户数据库来验证用户的凭据和角色吗?
  2. articles_service 等 - 它们是否应该成为不向公众开放的私有(private)服务,并充当用户的黑匣子?

最佳答案

我一直在研究这个问题,但没有任何好的记录在案的解决方案。我要做的是构建一个管理用户和您的访问控制列表 (ACL) 的服务。

  1. 身份服务 - 这是客户端授权自己访问 API 中其他服务的地方。

登录 [POST]
电子邮件
密码

这将返回一个 JWT token ,在有效负载部分中将包含以下信息:

  1. 用户名
  2. ACL

ACL 可以是他们拥有的允许角色的数组。这样,当客户端向 API 发出请求时,响应请求的服务可以自省(introspection)用户 ID (Knock - current_user),然后您可以从负载中获取 ACL。我认为很容易然后添加一个 before_action 来验证适当的角色。

关于ruby-on-rails - rails : Microservice architecture with dedicated authorization service and app services using Knock (JWT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42949138/

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