客户索赔未由保单检查

时间:2020-08-07 00:37:08

标签: c# asp.net-identity identityserver4

我们有一个使用C#Core 2.1,IdentityServer4和Identity进行用户身份验证的系统。其他各种项目也使用该系统进行授权。我可以在API中创建检查用户声明的政策;并使用这些策略来保护资源。我在API Sartup.cs中添加了与此类似的代码:

services.AddAuthorization(options =>
  {
    options.AddPolicy("example",
      policy => policy.RequireClaim("claim", "data"));
  });

并在我的API控制器或特定任务之前添加以下代码:

[Authorize(policy: "example")]

我们使用该系统已有很长时间了。现在,我们要锁定一个动作,以便只有特定的客户端可以执行此操作(而不是其用户)。但是,通过授权类型client_credentials获得的声明将不会添加到访问令牌中,或者不会被授权服务看到。

当没有openid作为范围时,是否可以查看令牌中的声明?

假设索赔存在,授权服务为何看不到它?

还有其他选择吗?我们希望锁定一个操作,以便只有客户端应用程序本身才能执行该操作。

1 个答案:

答案 0 :(得分:0)

首先,您始终可以使用Fiddler捕获原始令牌,以查看实际传递给令牌接收者的声明。然后,检查由身份验证处理程序创建的用户(ClaimsPrincipal)声称它包含的内容。

然后,您需要显式映射/添加丢失的声明,以使期望的声明进入ClaimsPrincipal User对象。默认情况下,该过程中会删除一些声明。