【问题标题】:stateless authentication and permissions in the JWT tokenJWT 令牌中的无状态身份验证和权限
【发布时间】:2021-08-05 02:02:45
【问题描述】:
  1. 应用程序中的用户根据他们所在的组拥有权限

  2. 我们希望将用户所在的组列表存储在 JWT 令牌中

  3. 当用户被添加或从组中删除时,这实际上意味着权限发生了变化,这就是用户端应该发生的事情:

    如果它们已完全从系统中删除,用户会立即被踢回登录屏幕

    如果他们刚刚从组中删除,例如,用户不会被踢出

    他们被告知他们的权利已经更新,他们被告知请刷新页面

    当用户刷新时,他们停留在他们正在查看的页面上

    如果用户在他们不再有权访问的屏幕上,他们将被发送到主页

1.到目前为止,我们一直在编写无状态的 REST API,但这似乎打破了这一点。实现它的最佳方法是什么? 2. 如果我们要保持简单并确保无国籍,最好的方法是什么?

【问题讨论】:

    标签: amazon-web-services authentication jwt amazon-cognito claims-based-identity


    【解决方案1】:

    通过无状态身份验证,您的 ID 令牌包含您的群组信息,直到过期(通常是一个小时)才会更新。您可以将此持续时间减少到 5 分钟。这将是确保对组的任何更新快速反映在前端的最简单方法。这些代币是独立的,一旦发行就无法撤销。即使您运行全局注销 API 调用或忘记设备 API 调用,也只会撤销刷新令牌,而 ID 和访问令牌在到期之前仍然有效。

    您提到的要求与无状态身份验证方法不兼容。当然,您可以创建一个“hacky”流程,其中您有一个数据库,该数据库记录被踢出的用户的 id,并且在每次调用之前它都会检查数据库,但这将是很多不必要的工作,而且您会打败整点使用无状态身份验证。

    如果您想继续使用 cognito,我的建议是将所有令牌的到期时间减少到最小值。您还可以从流程中消除刷新令牌,但这意味着用户需要每 5 分钟登录一次。 但如果你真的需要实现这一点,我建议使用有状态的身份验证方法。

    【讨论】:

    • 如果我要使用物联网,是每个租户一个主题还是每个租户每个组一个主题,还是每个用户一个主题?
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2018-07-01
    • 2017-12-10
    • 2020-11-22
    • 2017-12-15
    • 2021-03-25
    • 2020-07-07
    • 2021-12-17
    相关资源
    最近更新 更多