Asp.net web api IdentityServer v3缺少索赔和身份信息

Asp.net web api IdentityServer v3缺少索赔和身份信息,asp.net-web-api,claims-based-identity,thinktecture-ident-server,membershipreboot,thinktecture,Asp.net Web Api,Claims Based Identity,Thinktecture Ident Server,Membershipreboot,Thinktecture,我在远程服务器上运行了具有成员资格的IdentityServer和IdentityManager,我使用IdentityManager的管理UI设置用户,并向所述用户添加角色和声明 我正在开发一个WebApi/SPA项目,该项目将使用远程服务器进行身份验证。使用fiddler,我可以从远程框上的IdentityManager请求一个令牌,并在需要授权的地方使用该令牌来对抗本地WebApi。如果令牌是有效的,WebApi会像正常一样处理,如果令牌是假的,我会得到401。效果很好 问题是,当我需要关

我在远程服务器上运行了具有成员资格的IdentityServer和IdentityManager,我使用IdentityManager的管理UI设置用户,并向所述用户添加角色和声明

我正在开发一个WebApi/SPA项目,该项目将使用远程服务器进行身份验证。使用fiddler,我可以从远程框上的IdentityManager请求一个令牌,并在需要授权的地方使用该令牌来对抗本地WebApi。如果令牌是有效的,WebApi会像正常一样处理,如果令牌是假的,我会得到401。效果很好


问题是,当我需要关于用户的附加信息时,没有任何声明或身份信息会出现。我不确定问题是在IdentityServer端、WebApi端,还是在获取令牌时没有正确执行某些操作

我没有意识到我们需要将声明放在范围定义中。如果其他人偶然发现了这一点,我将我的范围改为以下内容

   var scopes = new List<Scope>
    {
        new Scope
        {
            Enabled = true,
            Name = "publicApi",
            Description = "Access to our public API",
            Type = ScopeType.Resource,
            IncludeAllClaimsForUser = true, //I'll filter this down later
        }
    };
    scopes.AddRange(StandardScopes.All);

    return scopes;
var scopes=新列表
{
新范围
{
启用=真,
Name=“publicApi”,
Description=“访问我们的公共API”,
Type=ScopeType.Resource,
includealclaimsforuser=true,//稍后我会过滤掉这个
}
};
scopes.AddRange(StandardScopes.All);
返回范围;
详情请参阅