通过 Spring 和 Auth0 创建和跟踪用户

问题描述 投票:0回答:1

我有一个资源服务器(Spring Boot),他们通过 Google/Apple/等通过 Auth0 SSO 的访问令牌来访问它。 (在移动应用程序上使用 React Native),授予授权。由此,我想在我的资源服务器中创建一个用户和/或更新此用户,以跟踪他们使用我的 REST API 执行某些应用程序特定的操作。

访问令牌将在资源服务器上用作承载令牌。但是,我不确定这与其他方法相比是否安全。

我知道的主要方法是:

  1. 使用提供的 Auth0 访问令牌,我通过调用服务器到服务器(Spring 到 Auth0),使用访问令牌从 Auth0 获取用户信息。此用户信息 - 提供商 ID、用户 ID、电子邮件 - 用于创建和更新用户实体。

但是,这意味着至少要在用户首次或第一次调用我自己的资源服务器时进行 API 调用(以创建用户实体)。

我想知道的两件事是 A. 这对我最初的方法想法来说安全吗? B.有更好的方法吗?

spring oauth-2.0 auth0
1个回答
0
投票

首先要注意的是,在自己的数据库中复制用户数据会带来常见的数据重复问题:当用户数据在 Auth0 更新时,您希望如何更新您的数据库?

解决这个问题的简单方法是在数据库中只保留用户的“密钥”,并在需要时从 Auth0 API 获取用户数据。 “主键”是用户主题,但您可以使用另一个属性,前提是它是唯一的、不为空且不可修改。当然,这比本地数据库慢,但是,也许您可以使用一些缓存。

另一个选项是在 Auth0 中设置一些钩子,以便在用户更新时调用您的资源服务器,但是 这看起来并不简单

要读取资源服务器中的用户数据,您可以使用 JWT 有效负载(它是“安全的”),并且不需要与 Auth0 进行额外的往返。您甚至可以使用 Auth0 操作来丰富默认声明(我的 Auth0 教程先决条件中的示例)。

© www.soinside.com 2019 - 2024. All rights reserved.