【问题标题】:User profile information store in JWT or use API用户配置文件信息存储在 JWT 中或使用 API
【发布时间】:2019-09-30 19:28:05
【问题描述】:

在我的应用程序中,我有单独的微服务用于用户身份验证和用户个人资料信息。用户身份验证服务使用 Spring Security OAuth2/JWT。用户成功登录后,将颁发一个带有用户唯一标识符的 JWT 令牌。

我的问题是其他服务应如何检索用户个人资料信息。我应该将这些信息(例如名字、姓氏等)放入 JWT 令牌中,还是应该在用户配置文件服务上创建一个 API,以便在检索到令牌后检索用户配置文件信息?

我们将不胜感激任何最佳实践建议。

【问题讨论】:

    标签: spring-security oauth-2.0 jwt


    【解决方案1】:

    到目前为止,我见过的大多数方法是仅将用户的登录信息存储在 JWT 令牌中,并有另一个服务通过登录为您提供其他需要的信息,这对我来说似乎是最好的方法(以防任何安全漏洞的登录是唯一可以被盗的东西,而不是用户的名字或姓氏)。

    【讨论】:

    • 感谢卡米尔,我认为 API 路线是要走的路。这是您检索令牌后的另一个请求,但它具有提供用户完整个人资料的优势,而无需取出您可能不想放入 JWT 令牌中的敏感数据。
    【解决方案2】:

    我认为重要的是要强调 OAuth2 旨在成为一种授权协议,而不是身份验证

    OpenID Connect 通过将身份(ID_Token)和授权(访问令牌)分成两个不同的令牌供应用程序使用来解决这个问题。我可以建议您考虑使用 OpenID Connect,而不是自己实现吗?

    【讨论】:

      【解决方案3】:

      在开发身份验证微服务时,我与我的团队进行了类似的讨论。尽管了解 JWT 是一种编码而不是加密很重要,但始终建议不要将敏感数据保存在 JWT 中。尽管我们决定保留在 JWT 中的项目也应该取决于我们正在解决的问题陈述。可能存在保存用户名或电子邮件 ID 不是敏感信息的用例,您可能希望将其保留在 JWT 中以避免额外的 API 调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 2020-02-19
        • 2021-02-18
        • 2012-09-05
        • 2019-04-01
        • 2014-12-08
        相关资源
        最近更新 更多