oauth-2.0 - OpenID Connect 用户信息端点使用

标签 oauth-2.0 single-sign-on openid access-token userinfo

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

最佳答案

最终还是要看用例:

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

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

此外,声明也可以作为 id_token 的一部分返回(例如,包括 first_name family_name),这可能足以满足某些用途情况下根本不需要调用用户信息端点。

总结:这取决于从用户信息端点返回的信息类型、客户端对信息的要求以及id_token中已经可用的信息。

关于oauth-2.0 - OpenID Connect 用户信息端点使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520807/

相关文章:

oauth-2.0 - 监视向 Keycloak 服务器发出的请求的方法

asp.net-mvc-5 - ASP.NET MVC 5 将 Web SSO 与外部 IDP 结合使用 - WS Fed 元数据未解析

Azure B2C 单点登录不起作用

single-sign-on - 同一域中的 OpenID Connect RP 和 OP?

javascript - 导入登录用户disqus评论

web-applications - 如何将控制权传递给外部 Web 应用程序并接收响应

node.js - Reddit 通过 API 投票时给出 403

ruby-on-rails - 当我尝试使用 omniauth-google-oauth2 gem 进行身份验证时,没有路由匹配 [GET] "/auth/google_apps"

android - 获取可与服务器共享的 OAuth2 授权码

spring-security - 带 token 中继的 Spring Cloud Security : Response has empty set cookie header