实施非内存Identity Server存储-如果SubjectId是数据库表的原始ID可以吗?

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

与一个较大的唯一数字(默认情况下为subjectId相比)相比,如果我仅将主键列存储在其中,是否会很糟糕?对于某些用户,该值将为1,对于其他用户,该值为9480,但几乎不会像默认的subjectId一样大。这是一个自动标识列,因此您可以想象它的行为方式。

如果这是不好的做法,请解释原因,因为我看不出有额外的一列填充这些属性的原因。令牌应受签名保护,这样他们就不能以任何方式滥用令牌?

c# security asp.net-core jwt identityserver4
1个回答
1
投票

specification

主题标识符是本地唯一的,永远不会重新分配最终用户的颁发者中的标识符,该标识符旨在由客户使用。

因此,用户的ID非常合适,这也是sub的默认值。而且您可以自由执行ID(例如Guid或int)。但规范中还有更多内容:

此规范定义了两种主题标识符类型:

公开

这将为所有客户端提供相同的子(主题)值。如果提供者没有subject_types_supported元素,则为默认设置在其发现文档中。

成对

这为每个客户端提供了不同的子值,以免客户端在没有以下情况的情况下关联最终用户的活动许可。

IdentityServer默认使用public子。如果您担心隐私问题,可以切换到pairwise子菜单。

但是,IdentityServer目前不支持客户特定主题。似乎计划在将来的版本中使用discussed here

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