1-)我试图添加几个声明来访问令牌,虽然调试我观察,它已被添加到AuthenticationResult-声明,但我没有在JWT访问令牌中看到。请在下面找到图片以供参考。我添加了一个名为" mem"价值123。
我在AuthenticationLocalAsync方法中添加了以下内容。
IEnumerable claim = new Claim [] {new Claim(" mem"," 123")};
context.AuthenticateResult =
new AuthenticateResult(context.UserName, context.UserName, claim);
debugging, It includes the custom claim
2-)第二个问题 - 当我使用PostMan作为客户端时,没有执行GetProfileDataAsync方法,因为正在为Mobile客户端开发API服务器,所以我使用的是PostMan客户端。登录本身我想得到我在第一点提到的索赔。请帮助,我已经花了很多时间来弄清楚这两点。
由于
答案 0 :(得分:1)
https://identityserver.github.io/Documentation/docsv2/configuration/scopesAndClaims.html
var scope = new Scope
{
Name = "memScope",
DisplayName = "Scope for mem claim",
Type = ScopeType.Resource,
Claims = new List<ScopeClaim>
{
new ScopeClaim("mem")
}
};
https://identityserver.github.io/Documentation/docsv2/configuration/clients.html
答案 1 :(得分:0)
首先,我想提一下我还不是Identity Server专家。但我会尽我所能。
我个人不会在AuthenticateLocalAsync方法中分配声明。应将此逻辑移至声明提供程序。
但是,如果您坚持在身份验证步骤中添加声明,则您的问题仍然很可能位于ClaimsProvider中。包含在令牌中的声明由ClaimsProvider直接处理。因此,GetAccessTokenClaimsAsync()可能甚至不包括添加到主体的声明,或者存在明确阻止返回自定义声明的某种逻辑。
这是我最好的猜测。