用户是否同意与api有权访问的客户相关的客户?

时间:2017-08-30 09:33:48

标签: c# identityserver4

IdentityServer4的文档中,它说:

  

[...]同意用于允许最终用户授予客户端访问权限   资源(身份或API)。这通常只是必需的   第三方客户[...]

这是否意味着api可以访问用户未同意为用户登录的客户提出的声明?

TL; DR

如果我登录我的mvc-client同意许可Your email address,我会得到我的期望:

  • mvc-client的Secure-View列出了身份令牌的所有声明,包括电子邮件地址
  • 使用用户令牌调用API也会按预期显示电子邮件地址

但如果我登录并在同意屏幕上勾选Your email address的许可:

  • mvc-client的安全视图列出了身份令牌的所有声明,但没有列出电子邮件地址(如预期的那样)
  • 但是现在使用用户令牌调用API也会显示我没想到的电子邮件地址,或者这是正常行为吗?

实施例的配置

我有这个例子(源自QuickStart Example 5):

  • mvc-client来自样本
  • email - 范围列在Scope中 - 该客户的OpenIdConnectOptions
  • 的定义 该客户的
  • AllowedScopes包括IdentityServerConstants.StandardScopes.Email
  • 和mvc-client可访问的api api1IdentityServerConstants.StandardScopes.Email
  • 中添加了UserClaims
  • 我正在使用自定义配置文件服务,但这与问题无关(刚检查过,如果像上述步骤一样配置,提到的QuickStart示例的行为方式相同)

1 个答案:

答案 0 :(得分:0)

我自己回答这个问题,但还没有接受,因为我不是百分百肯定。

是的,这是预期的行为,我想我只是混淆了不同的令牌类型。 在我的案例中,api称为using user token,实际上意味着access token

根据我的理解,引用文档部分中提到的身份资源不适用于访问令牌(用户身份由身份令牌建模),因此应该预期行为。