【问题标题】:how to detect the user in OpenID Connect provider token endpoint如何在 OpenID Connect 提供者令牌端点中检测用户
【发布时间】:2019-02-20 14:39:32
【问题描述】:

谈论authorization_code 授权类型。在 OpenID Connect 提供者的授权端点中,我们向依赖方提供了一个授权代码,然后他们使用此代码向令牌端点发出反向通道请求(不涉及浏览器)。 所以问题是,如何在令牌端点区分这个用户?我猜这个调用不存在会话,因为它是一个反向通道请求。 可以使用哪些方法来识别用户。存储在内存中的 HashMap 是否是一个理想的解决方案

【问题讨论】:

  • 这将是特定于框架的。
  • 假设它是本机 Java 实现,理想的解决方案是什么?

标签: java token openid connect


【解决方案1】:

将其存储在 HashMap 中是一种无法扩展的解决方案,因为内部内存不会跨服务器节点共享。

您必须将其存储在某种形式的持久存储中

  • SQL 数据库
  • NoSQL 数据库
  • 一个键值数据库

请注意,您不仅需要能够确定创建它的用户,还需要确定客户端,因为客户端无需验证自己即可获取代码。还要知道,您需要能够确定给定代码涵盖哪些范围,并检测代码的重复使用情况,并在重复使用的情况下撤销关联的访问令牌。

另一方面,您需要能够轻松地再次忘记密码。它们是短期使用,在 ttl 之后保留它们是没有用的。

您对存储您生成的访问令牌、刷新和 id 令牌有类似的要求,因此构建也可以用于这些的东西是有意义的。

【讨论】:

  • 感谢您的回复。但是我不明白这个“客户不需要验证自己来获取代码”。在什么情况下会出现这种情况?据我了解,如果不存在用户会话,则依赖方联系授权端点将强制用户进行身份验证。
  • 客户端(或依赖方)与用户不同。授权端点对用户进行身份验证,并接受 client_id 来标识客户端,但不接受 client_secret。
猜你喜欢
  • 2018-04-17
  • 2020-11-20
  • 2021-11-03
  • 2014-04-25
  • 2015-02-05
  • 2017-11-08
  • 2015-09-03
  • 2020-12-15
  • 2018-04-05
相关资源
最近更新 更多