澄清 Identityserver 4 使用 ApiResources 保护 API 范围

Clarification on Identityserver 4 protecting API scopes with ApiResources

我不太了解使用 APIResource 和 APIScopes

保护 API

我有一个 angular 客户端应用程序正在调用 .Net APIs 让我们说 API1,Api2,我如何定义 API 中的值资源。

迁移后我正在检查 Identity server4(版本 4.0.0)数据库 table。我发现 table 如下

  1. ApiResources

  2. ApiResourceScopes

  3. ApiResourceClaims

  4. ApiResourceProperties

  5. ApiResourceSecrets

  6. ApiScopes

  7. ApiScopeClaims

  8. ApiScopeProperties

我的理解是我们可以使用 1-5 tables 进行 API 设置,或者我们可以使用 6-8 tables。我尝试使用 tables 1-5。在 ApiResources 、ApiResourceScopes 和 ApiResourceClaims 中添加值但低于错误

[18:03:53 Debug] IdentityServer4.EntityFramework.Stores.ResourceStore
Found ["TestAPI.Read"] scopes in database

表中的值

  1. ApiResourceClaims有什么用table?这个返回的用户是否使用访问令牌声明?

  2. 如何从客户端访问此范围?

  3. 还有没有其他的table,需要加数据吗?

首先我建议你阅读我的回答

  • ApiResourceClaims 有什么用table?这个返回的用户是否使用访问令牌声明?

它包含将包含在访问令牌中的用户声明列表。意思是,它将从用户数据库中获取的声明的名称。

  • 如何从客户端访问此范围?

您需要绑定一个 ApiScope。您要求一个 ApiScope,然后将包含一个或多个 ApiResources。

ApiResources 代表您系统中的个体 API。因此,每个 API 有一个 ApiResource。您使用 ApiResource 名称和密码让个人 API 针对 IdentityServer 进行身份验证并登录,例如获取有关访问令牌的详细信息 (Token introspection)

我认为我下面的这张图显示了各个部分之间的关​​系:

客户端请求一个 ApiSCope,然后它将创建一个访问令牌,该令牌将提供对一个或多个 ApiResources 的访问权限。每个 ApiResource 都可能使用 userclaims 请求您希望在访问令牌中显示的其他用户信息。也许是为了 API 中的授权步骤。判断用户是否真的被允许进入。