【问题标题】:Why is the IdentityTokenLifetime default to 300 sec?为什么 IdentityTokenLifetime 默认为 300 秒?
【发布时间】:2018-01-26 12:51:03
【问题描述】:

也许我应该问一下身份令牌的预期用途是什么。我认为它用于识别用户并且可以传递给其他服务(例如后端服务)并且该服务使用 id_token 来验证它是一个有效的用户?但我没有看到任何当前可用的端点来验证 id_token。如果没有,应该从一个服务传递什么到另一个服务来验证用户?

唯一接受 id_token 参数的端点是 End Session Endpoint,它作为 id_token_hint 传递。但在这种情况下,为什么 IdentityTokenLifetime 默认为 300 秒?我不希望用户在 300 秒内结束会话。

【问题讨论】:

    标签: openid-connect identityserver4


    【解决方案1】:

    身份令牌是一次性令牌。

    它包含用户的身份和身份验证元数据。一旦令牌被验证,它就可以(理论上)被删除。只需选择您感兴趣的声明即可。

    在这种情况下,您希望在退出期间保留身份令牌以用于特殊功能。

    身份令牌从不传递。这就是访问令牌的用途。

    【讨论】:

      【解决方案2】:

      根据 OpenID Connect 规范,身份验证建立在 ID Token 之上,

      OpenID Connect 对 OAuth 2.0 进行的主要扩展是 ID 令牌数据结构

      一旦您收到 ID 令牌,您就可以对您正在处理的最终用户进行身份验证。 ID 令牌可以是短暂的(如您所见)。在这种情况下,您应该将访问令牌用于其他通信目的。

      现在为了扩展这个答案,我想提一下用户信息端点、令牌自省和刷新令牌。

      用户信息端点

      OpenID Connect 规范定义了一个名为 userinfo 的端点。

      UserInfo 端点是一个 OAuth 2.0 受保护资源,它返回有关经过身份验证的最终用户的声明。

      人们可以使用有效的访问令牌来交换经过身份验证的用户信息。依赖访问令牌来验证和验证最终用户的端点可以使用这些信息。

      身份服务器参考 - LINK

      令牌自省

      RFC7662 定义了一种检查访问令牌有效性的方法。它只是期望访问令牌作为承载令牌并提供令牌的有效性信息。

      令牌刷新

      这是最有趣的部分。可以使用上述两个端点来验证访问令牌和绑定到访问令牌的最终用户。但正如您所提到的 id 令牌和访问令牌过期。但是刷新令牌可能不会过期。谷歌使用非过期的刷新令牌(但它并不一定说你必须这样做,因为谷歌这样做了。!)。并且可以使用刷新令牌刷新访问令牌和 ID 令牌。是的,OIDC 规范。没有提到刷新请求的 id 令牌。但是身份提供者可以发送一个更新的 id 令牌(或者它可以是一个配置)。 MS Azure AD 使用这种方法。

      现在您可以看到,令牌验证有很多事情要做。您的最终解决方案可以是 OIDC 规范中可用选项的组合。

      最后的想法是,长期存在的令牌可能会带来安全威胁。特别是如果您的客户类型是公开的。请注意将令牌生命周期配置为更大的值,而不是这样做,而是尝试使用规范的其他可用功能。

      【讨论】:

      • 同意,它的存在只是为了让另一个应用程序确认身份,然后建立自己的会话,但这是实现的。也就是说,即使它们已过期,您也可以使用它们。例如调用 endsession 端点时的 id_token_hint。这个想法是,如果您有一个由身份服务器颁发的 id_token,那么在不先提示用户的情况下启动注销是安全的。
      • 感谢您的回答。我的问题是是否可以将 id_token 传递给其他服务以让这些服务验证 id_token 或者它应该传递 user_info_access_token 。但 user_info_access_token 用于从用户信息端点获取用户信息。传递的 id_token 用于验证用户,而 user_info_access_token 用于授权获取用户信息。其他服务只需要知道用户试图访问其服务。它是否假设其他服务可以获取用户信息,然后可以识别用户?
      • @mackie 我更新了我的答案以添加一些信息。让我知道你的 cmets
      猜你喜欢
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2010-12-17
      相关资源
      最近更新 更多