IdentityServer:在ImplicitFlow中请求资源范围

时间:2015-08-13 11:54:33

标签: .net authentication openid identityserver3

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

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

2 个答案:

答案 0 :(得分:1)

当然,我猜。通常你应该能够询问任何特定的范围,只需用空格分隔每一个范围:

实施例: 范围:“openid profile email roles resourcescope1”,

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

答案 1 :(得分:1)

在客户端从身份服务器收到id_token和access_token后,客户有责任立即验证身份标记。

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

用户信息端点通常应该返回所有请求的范围...您是否已经尝试过?

BTW:你使用的是什么版本的IdentityServer?

编辑:同样非常重要的是:您的'resource_scope'是否会显示在同意屏幕上?