与一个较大的唯一数字(默认情况下为subjectId相比)相比,如果我仅将主键列存储在其中,是否会很糟糕?对于某些用户,该值将为1
,对于其他用户,该值为9480
,但几乎不会像默认的subjectId一样大。这是一个自动标识列,因此您可以想象它的行为方式。
如果这是不好的做法,请解释原因,因为我看不出有额外的一列填充这些属性的原因。令牌应受签名保护,这样他们就不能以任何方式滥用令牌?
主题标识符是本地唯一的,永远不会重新分配最终用户的颁发者中的标识符,该标识符旨在由客户使用。
因此,用户的ID非常合适,这也是sub
的默认值。而且您可以自由执行ID(例如Guid或int)。但规范中还有更多内容:
此规范定义了两种主题标识符类型:
公开
这将为所有客户端提供相同的子(主题)值。如果提供者没有subject_types_supported元素,则为默认设置在其发现文档中。
成对
这为每个客户端提供了不同的子值,以免客户端在没有以下情况的情况下关联最终用户的活动许可。
IdentityServer默认使用public
子。如果您担心隐私问题,可以切换到pairwise
子菜单。
但是,IdentityServer目前不支持客户特定主题。似乎计划在将来的版本中使用discussed here。