UserInfo端点需要什么范围 - 除了'openid'?

时间:2017-02-15 13:24:41

标签: identityserver4

我正在使用带有.NET Core的IdentityServer 4。

我可以使用grant类型ResourceOwnerPassword('password')成功登录,然后立即调用UserInfo端点。该调用失败,当我检查服务器日志时,我看到:

  • '范围验证失败。返回403' 和
  • '在当前主体上找到的范围:范围: openid ,范围:个人资料,范围:角色,范围:api1,范围:offline_access'

文档说'至少需要openid范围',日志显示我有,但文档也说,就在此之前,'......取决于授予的范围......' - 范围是什么?在哪里指定UserInfo端点需要哪些范围?我假设我错过了它/他们,但不知道是什么。我有正确的范围来成功命中令牌端点(/ connect / token),但没有正确的范围来成功调用userinfo端点(/ connect / userinfo)。

有人可以帮忙吗?

谢谢!

巴兹

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

好的我想通了 - 我在UserInfo端点的调用中错过了 AllowedScope 。当我在Startup.Configure()方法中添加范围时,它起作用了:

    app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
    {
       Authority = "http://localhost:5000/",
       AllowedScopes = { "api1", "WebAPI" },
       RequireHttpsMetadata = false
    });

我不明白的是登录本身是如何工作的。范围是在调用登录(/ connect / token)时发送的 - 并且成功。我认为这些范围用于身份验证,因为此类的名称是“..AuthenticationOptions”。我猜这些是在登录期间的选项,而不是用于登录的选项,它们仅在您外出访问资源时使用,例如/ connect / userinfo。也许知道的人可以证实这一点。

感谢您的帮助!

巴兹