收到有效的访问令牌后,最佳做法是调用对userinfo
端点的调用,并检索用户元数据,每次后续调用您的应用程序,或调用{{1而是调用一次,并将用户元数据响应存储在例如cookie中,以便后续请求从cookie读取用户元数据,而不是为每个请求调用userinfo
。
答案 0 :(得分:2)
最终取决于用例:
在普通的消费者使用案例中,用户信息端点将提供很少更改的信息,并且缓存信息是一种安全的假设。但是,在某些企业用例中,用户信息端点可能会提供用于实时访问控制决策的信息,在这种情况下,缓存信息可能不明智,或者至少不会很长时间。
但您的客户可能甚至不依赖于更改的数据,例如如果它唯一使用的是持久标识符(sub
)和given_name
/ family_name
声明。然后,即使从用户信息端点返回的其他数据可能会随着时间的推移而发生变化,您的客户端也不会在没有再次调用用户信息端点的情况下缓存sub
,given_name
和family_name
。
此外,声明也可能作为id_token
的一部分返回(例如包括first_name
family_name
),这可能足以满足某些用例的需要,因此无需调用用户信息端点。
总结:它取决于从用户信息端点返回的信息类型,客户对信息的要求以及id_token
中已有的信息。