用户个人资料信息存储在JWT中或使用API

时间:2019-05-13 19:55:03

标签: spring-security oauth-2.0 jwt

在我的应用程序中,我具有用于用户身份验证和用户配置文件信息的单独的微服务。用户身份验证服务正在使用Spring Security OAuth2 / JWT。用户成功登录后,将向JWT令牌颁发用户唯一标识符。

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

任何最佳实践建议都会受到赞赏。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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