我的客户从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!
有什么问题?
答案 0 :(得分:2)
您可以使用
打印出声明列表<dl>
@foreach (var claim in User.Claims)
{
<dt>@claim.Type</dt>
<dd>@claim.Value</dd>
}
</dl>
在客户端应用程序上尝试此操作,您将知道您是否在获得名称价值。