2017-09-05 98 views
0

我的客户端从IdentityServer4获得令牌,并将其提供给我的API以获得服务,所有事情都会变成现实,直到我想获得用户声明(STS会自动将其放入用户声称),当我打电话给User.Identity.Name时,它返回null。 Accroding到This Link我应该在API启动定义范围,所以我定义:客户端如何获得有关IdentityServer4用户的资源声明

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

所有的事情会发生吧,我的用户可以从IdentityServer得到令牌,当我把它传递给API,该Authorization将完成成功,但User.Identity.Name返回null! 有什么问题?

回答

2

可以打印出来使用

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

试试这个客户端应用程序的索赔清单,你就会知道,如果你是在名称或没有得到价值。

相关问题