IdentityServer 4 和范围特定的用户设置

IdentityServer 4 and scope specific user settings

我计划在 ASP.NET Core 上使用 IdentityServer 4,并将 ASP.NET Identity 作为数据存储。这是我第一次使用中央authentication/authorization,我想知道如何解决以下问题:

假设我的用户拥有名称、角色等声明,以及允许这些用户从硬件设备访问测量值的 Web API(范围)。 IdentityServer 将允许我对已知用户进行身份验证,但现在我需要一个访问控制来知道哪些用户可以访问哪些设备数据。

我在哪里存储这些信息?因为它是特定于范围的,所以我想它不应该存储在 IdentityServers 存储中。另一方面,如果我将它存储在范围自己的数据库中,我需要以某种方式将它连接到 IdentityServers 存储中定义的用户。我应该定义对所有范围和 IdentityServer 唯一的用户 ID 吗?

您需要将 IdentiyServer returns 的用户 ID 与范围数据库中定义的用户相关联。

我相信有一个用户 table 和一个用户登录 table,您可以在其中跟踪每个用户的不同登录信息。

然后,在示波器的数据库中,您可以指定哪些用户可以访问哪些设备数据。

这是个坏主意,可能会让您走上一条不该走的路。

这意味着您请求范围的客户端应用程序甚至在向 IDP 请求令牌之前就需要知道哪个用户可以访问哪些范围(否则您的令牌请求将无效)。而是将这些建模为用户声明。然后在您的 WebApi 上,您可以进行正常的基于声明的授权。