gpt4 book ai didi

authentication - 您如何处理微服务的授权和身份验证?

转载 作者:行者123 更新时间:2023-12-04 06:38:48 26 4
gpt4 key购买 nike

在我的公司,我们正在微服务之上构建一个应用程序。我们正在努力决定如何处理授权和身份验证。我们正在考虑使用 OpenId Connect 对用户进行身份验证的路径,但在授权方面,我们需要一些建议。

我来解释一下解决方法:一个用户在不同的部门可以有不同的角色,部门的数量可以超过200个。在每个部门中,用户可以有多个角色。我们了解处理角色的推荐方式是将它们放在从客户端发送到服务器 (JWT) 的 token 中。但是,我们担心这会使 token 有效负载过大。据我所知,浏览器最多可以保存 5KB 的数据头。在我们的例子中,这意味着大约 50 个部门有两个角色(未压缩)。这样做的好处是用户在进入微服务时获得了授权和身份验证。正如我提到的,缺点是 token 中的大负载。

我们也在寻找一个不同的选项,我们将 JWT 保持在最低限度(用户 ID 和部门 ID),并在每个请求上查询 Keycloak 的用户权限(可能添加一些生命周期较短的缓存机制)。这种方式会向授权服务器产生大量的请求。

我正在寻找的是其他人如何解决这个问题的一些建议/经验。如果需要,我很乐意提供更多信息。

为了让您更轻松地提出建议,以下是对这两种选择的简短说明:
1)使用JWT来处理认证和授权?为什么?
2)在每个微服务中保持 JWT 轻量级并向授权服务器发出请求?为什么?

最佳答案

我想说,两种选择:

选项1

  • 保持 JWT 的光亮
  • 将 OAuth2“授权码”授权类型与刷新 token 和访问 token 一起使用
  • 在集中式分布式缓存系统中缓存用户权限,使用类似 LFU 的驱逐策略
  • 在访问 token 更新期间(根据访问 token 有效期会定期更新),获取用户的最新访问权限并刷新缓存
  • 如果缓存中没有访问权限,请查询 Keycloak 并在缓存中添加条目

  • 因此,
  • 任何权利的变化都将在 token 有效期内得到反射(reflect)
  • 由于缓存,性能会更好

  • 选项 2

    与选项 1 相同,不同之处在于您可以在用户权限 DB 上使用更改数据捕获 (CDC) 以根据访问权限的任何更改来更新缓存。

    关于authentication - 您如何处理微服务的授权和身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55280289/

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