OpenID Connect 用户信息端点使用

OpenID Connect UserInfo Endpoint Usage

在收到有效的访问令牌后,调用 userinfo 端点并检索用户元数据是否被认为是最佳实践,对于您的应用程序的每个后续调用,还是应该调用 userinfo 而不是调用一次,并且用户元数据响应存储在例如 cookie 中,以便后续请求从 cookie 中读取用户元数据,而不是为每个请求调用对 userinfo 的调用。

最后还是要看用例:

在普通消费者用例中,用户信息端点将提供很少更改的信息,缓存信息是一个安全的假设。然而,在某些企业用例中,用户信息端点可能会提供用于实时访问控制决策的信息,在这种情况下,缓存信息可能并不明智,或者至少不会长期缓存。

但是您的客户甚至可能不依赖于变化的数据,例如如果它唯一使用的是持久标识符 (sub) 和 given_name/family_name 声明。然后,即使从用户信息端点返回的其他数据可能会随时间变化,您的客户端也不会打扰,而是缓存 subgiven_namefamily_name,而无需再次调用用户信息端点.

此外,声明也可能作为 id_token 的一部分返回(例如,包括 first_name family_name),这对于某些用例来说可能就足够了,因此不需要完全调用用户信息端点。

总而言之:这取决于从用户信息端点返回的信息类型、客户对信息的要求以及 id_token.

中已经可用的信息