实现非内存身份服务器存储 - 如果 SubjectId 是数据库表的精确 ID 是否可以?



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

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

从规范:

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

所以用户的 Id 适合完美,这也是用于sub的默认值。您可以自由地了解如何实现 Id(例如 Guid 或 int(。但规范中还有更多内容:

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

公共

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

成对

这为每个客户端提供了不同的子值,以便使客户端能够在没有 许可。

默认情况下,IdentityServer 使用publicsubs。如果您担心隐私,可以切换到pairwise潜艇。

但是,目前 IdentityServer 不支持客户端特定的主题。这似乎计划在未来的版本中发布,如此处所述。

最新更新