0

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

我尝试创建 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 端点以获取用户声明。

4

2 回答 2

1

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

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

用户信息端点通常应该返回所有请求的范围......你试过了吗?

顺便说一句:您使用的是哪个版本的 IdentityServer?

编辑:同样重要的是要知道:您的“resource_scope”是否显示在同意屏幕中?

于 2015-08-15T20:53:51.393 回答
1

我觉得是的。通常你应该可以询问任何特定的范围,只需用空格分隔它们:

示例:范围:“openid 配置文件电子邮件角色 resourcescope1”,

使用您定义的“identity_scope”范围,您不应该使用 openid 范围吗?

于 2015-08-14T10:33:12.480 回答