Identity server3:User Info端点返回null声明

时间:2016-09-06 17:34:56

标签: identityserver3

我正在使用授权代码流,我正在尝试使用用户信息端点获取用户信息,但我没有获得声明。我已经为某些声明启用了IncludeInIdToken,例如名称配置文件电子邮件,当解码Idtoken时,我无法看到上述声明。 我试过调试GetProfileDataAsync方法,在这里我发现“Name”属性为null,因为我使用的是AD组,我需要这个Name属性。 我试图在LocalLoginAsync方法中将“Name”保存到全局变量中,并在GetProfileDataAsync方法中使用相同的方法。现在我已经向TaskResult添加了声明,但我在响应

中计数为'0'

当我使用代码请求令牌时,我可以在声明中看到以下结果

Claims

我无法在IdToken中看到这些声明, Id_token

接下来,通过使用访问令牌请求使用用户信息端点的时间我没有得到任何声明,除了“sub”或没有Name属性。

如何通过用户信息端点响应获取声明

2 个答案:

答案 0 :(得分:0)

我试过通过调试代码并发现问题,因为我正在做错误,如

返回Task.FormResult(identity.Claims.where(x => context.RequestedClaimTypes.Contains(x.Types)));

而不是

context.IssuedClaims = identity.Claims.where(x => context.RequestedClaimTypes.Contains(x.Types)); 返回Task.FromResult(0);

但我仍然使用用户信息端点..,

获取用户名(Name)属性null

答案 1 :(得分:0)

我假设您在请求中请求profile范围。如果这是真的,则username不是有效范围,并且不构成此范围的list of standard claims的一部分。您应该将自己的声明重命名为nicknamepreferred_username