【问题标题】:Identity server3 : User Info endpoint returns null Claims身份 server3:用户信息端点返回空声明
【发布时间】:2016-09-09 02:10:41
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: identityserver3


    【解决方案1】:

    我已经尝试调试代码并发现了问题,因为我犯了类似的错误

    return 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);

    但我仍然使用用户信息端点获取用户名(名称)属性 null..,

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-19
        • 2015-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-03
        相关资源
        最近更新 更多