【问题标题】:id_token/Identity token claims difference between implicit vs any other flowid_token/Identity token 声明隐式与任何其他流之间的差异
【发布时间】:2019-12-17 01:28:40
【问题描述】:

为什么在使用隐式或任何其他授权类型时身份令牌声明会有所不同?这是按规范还是我做错了什么?任何有助于理解此行为的帮助将不胜感激。

当我使用带有 id_token 响应的隐式授权类型时,我会从身份服务器正在保护的客户端将所有声明添加到范围中。 但是当我使用混合授权类型或代码授权类型时,身份令牌中缺少大多数声明(电子邮件和电话)。但我可以在访问令牌中看到范围列表中的电子邮件和电话。 使用访问令牌,我可以点击 userinfo 端点来获取范围内的所有信息。

【问题讨论】:

标签: .net identityserver4


【解决方案1】:

根据使用的流程和身份提供者的实施,令牌的内容可能会有所不同。

OpendId Connect Specs 说:

3.3.3.6。身份令牌

使用混合流时,从 Token Endpoint 返回的 ID Token 的内容与 ID Token 的内容相同 从授权端点返回,如第 1 节中所定义 3.3.2.11,但本节规定的差异除外。

如果从授权端点和 来自令牌端点,response_type 就是这种情况 值 code id_token 和 code id_token token, iss 和 sub Claim 两个 ID 令牌中的值必须相同。所有关于 任何一个中存在的身份验证事件都应该出现在两者中。如果 任一 ID 令牌包含有关最终用户的声明,任何 两者中都存在应该在两者中具有相同的值。请注意,OP 可以选择从 授权端点,例如,出于隐私原因。 at_hash 和 c_hash 声明可以从返回的 ID 令牌中省略 令牌端点,即使这些声明存在于 ID 令牌中 从授权端点返回,因为 ID 令牌和 从令牌端点返回的访问令牌值已经 由执行的 TLS 加密以密码方式绑定在一起 令牌端点。

如果您从两个端点(授权和令牌)获取访问令牌,它们可能会有所不同:

3.3.3.8。访问令牌

如果从两个授权端点返回访问令牌 并来自令牌端点,response_type 就是这种情况 values code token 和 code id_token token,它们的值可能是 相同或可能不同。请注意,不同的访问令牌可能 被退回是由于不同的安全特性 两个端点以及生命周期和对资源授予的访问权限 它们也可能不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2017-06-20
    • 1970-01-01
    相关资源
    最近更新 更多