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

.net core 客户端如何在IdentityServer4中获取有关用户的资源声明,.net-core,identityserver4,.net Core,Identityserver4,我的客户从IdentityServer4获取令牌,并将其交给我的API以获得服务, 在我想要获得用户声明(STS会自动将其放在用户声明上)之前,一切都是真的,当我调用user.Identity.Name时,它返回null。 根据API启动时我应该定义范围,因此我定义: app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions { Authority = "ht

我的客户从
IdentityServer4
获取令牌,并将其交给我的
API
以获得服务, 在我想要获得用户声明(STS会自动将其放在用户声明上)之前,一切都是真的,当我调用
user.Identity.Name
时,它返回null。 根据API启动时我应该定义范围,因此我定义:

  app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
        {
            Authority = "http://localhost:33934",
            RequireHttpsMetadata = false,
            ApiName = "api1",
            AllowedScopes = { "profile", "email", "api1" },
        });
一切正常,我的用户可以从IdentityServer获取令牌,当我将其传递给API时,
授权将成功完成,但
user.Identity.Name
返回null!
有什么问题吗?

您可以使用

<dl>
    @foreach (var claim in User.Claims)
    {
        <dt>@claim.Type</dt>
        <dd>@claim.Value</dd>
    }
</dl>

@foreach(User.Claims中的var声明)
{
@索赔.类型
@索赔价值
}

在客户端应用程序上试试这个,你就会知道你是否名副其实

您可以使用

<dl>
    @foreach (var claim in User.Claims)
    {
        <dt>@claim.Type</dt>
        <dd>@claim.Value</dd>
    }
</dl>

@foreach(User.Claims中的var声明)
{
@索赔.类型
@索赔价值
}
在客户端应用程序上试试这个,你就会知道你是否名副其实