Auth0 JWT 中的“Sub”声明是不是总是唯一的?

Posted

技术标签:

【中文标题】Auth0 JWT 中的“Sub”声明是不是总是唯一的?【英文标题】:Will the "Sub" claim in an Auth0 JWT always be unique?Auth0 JWT 中的“Sub”声明是否总是唯一的? 【发布时间】:2017-09-11 18:29:32 【问题描述】:

我只是有一个快速的 Auth0 问题。我已经看遍了,但我越看越困惑。

在我登录时 Auth0 提供给我的 JWT 的有效负载中,有一个 Sub 声明,看起来像这样“sub”:“facebook|123456789”。

我只是好奇 sub 是否总是唯一的,以及我是否可以在我的数据库中将它用作一种外键来将用户链接到不同的表。

【问题讨论】:

【参考方案1】:

sub,subject 的缩写,在这种情况下是代表 Auth0 中用户的规范化用户配置文件的用户 ID。

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

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

【讨论】:

以上是关于Auth0 JWT 中的“Sub”声明是不是总是唯一的?的主要内容,如果未能解决你的问题,请参考以下文章

Auth0 + Swashbuckle .Net Core 2.2。使用 SwaggerUI 时 jwt 令牌中缺少声明

IdentityServer4 + JWT:为“sub”声明定义用户属性

如何从 auth0 中的访问令牌中获取 jwt 令牌

如何让我的 Auth0 权限进入 AWS HTTP API Jwt 授权方的访问令牌的范围声明?

PHP中的Auth0 JWT令牌验证

如何查看存储在 JWT 中的数据?使用 auth0 和 express-jwt