客户端如何在IdentityServer4中获取有关用户的资源声明

时间:2017-09-05 07:56:11

标签: .net-core identityserver4

我的客户从IdentityServer4获取令牌并将其提供给我的API以获取服务, 一切都成真,直到我想获得用户声明(STS自动提出用户声明),当我调用User.Identity.Name时,它返回null。 加入This Link我应该在API启动中定义Scope,所以我定义:

  app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
        {
            Authority = "http://localhost:33934",
            RequireHttpsMetadata = false,
            ApiName = "api1",
            AllowedScopes = { "profile", "email", "api1" },
        });

一切顺利,我的用户可以从IdentityServer获取令牌,当我将其传递给API时,Authorization将成功完成,但User.Identity.Name将返回null! 有什么问题?

1 个答案:

答案 0 :(得分:2)

您可以使用

打印出声明列表
<dl>
    @foreach (var claim in User.Claims)
    {
        <dt>@claim.Type</dt>
        <dd>@claim.Value</dd>
    }
</dl>

在客户端应用程序上尝试此操作,您将知道您是否在获得名称价值。