Auth0 JWT 中的 "Sub" 声明是否始终是唯一的?

Will the "Sub" claim in an Auth0 JWT always be unique?

我只是有一个快速的 Auth0 问题。我到处都看了,但我越看越糊涂。

在我登录时 Auth0 给我的 JWT 负载中有一个 Sub 声明,看起来像这样 "sub":"facebook|123456789".

我很好奇 sub 是否始终是唯一的,以及我是否可以将它用作数据库中的一种外键,以便 link 用户访问不同的表。

sub 是 subject 的缩写,在本例中是代表 Auth0 中用户的规范化用户配置文件的用户 ID。

此处,facebook|123456789 是连接策略(在您的示例中为 facebook 类型的社交连接)与 用户的facebook ID(来自facebook)。但是,请记住,使用 facebook,当您设置连接时,您实际上是在设置与特定 Facebook 应用程序的连接 -(您在该连接策略的 Auth0)。长话短说,对于类型为 facebook 的单一连接策略,在 Auth0 仪表板中的社交连接下定义 - 那么是的,这将是唯一的,并且可以是一个单独的数据存储的相关标识符,其中包含有关该用户配置文件等的丰富信息。

请记住,如果您要创建另一个在 Facebook 中定义的单独应用程序,然后设置一个新的 Auth0 facebook 连接到该 facebook 应用程序,并使用同一用户登录 - 他们几乎肯定会收到不同的 sub 因为 facebook userId 会不同。例如,它可能是 facebook|987654321