IdentityServer:在 ImplicitFlow 中请求资源范围

IdentityServer: requesting resource scopes in ImplicitFlow

如果我使用带有隐式流的客户端,是否可以请求资源范围和身份范围?

我尝试如下创建 OpenIdConnectAuthenticationOptions:

new OpenIdConnectAuthenticationOptions
{
  ClientId = "implicitclient",
  Authority = ...,
  RedirectUri = ...,
  ResponseType = "id_token token",
  Scope = "identity_scope resource_scope",
  ...

身份验证时仍然只返回 identity_scope。

感谢任何帮助和意见。

编辑:一些背景知识

我有两个客户端:隐式流客户端和资源所有者流客户端。 我需要在它们之间共享身份和资源范围。

对于隐式流客户端,我开始使用"id_token token" response_type。

对于资源所有者客户端,我首先使用

请求访问令牌

OAuth2Client.RequestResourceOwnerPasswordAsync()

包括所有必需的范围。之后,我使用提供的访问令牌查询 userinfo 端点以获取用户声明。

当然,我想。通常你应该可以询问任何特定的范围,只需用 space:

将它们分开

示例: 范围:"openid profile email roles resourcescope1"、

根据您定义的 'identity_scope' 范围,您不应该改用 openid 范围吗?

在您的客户端从身份服务器收到 id_token 和 access_token 后,客户端有责任立即验证 ID 令牌。

这是通过使用授权 header 中收到的访问令牌作为承载调用用户信息端点来实现的。

用户信息端点通常应该 return 所有请求的范围...您已经尝试过了吗?

顺便说一句:您使用的是什么版本的 IdentityServer?

编辑:同样重要的是要知道:您的 'resource_scope' 是否出现在同意屏幕上?