如何检测 OpenID Connect 提供商令牌端点中的用户
how to detect the user in OpenID Connect provider token endpoint
谈论 authorization_code 资助类型。在 OpenID Connect 提供商的授权端点,我们向依赖方提供授权代码,然后他们使用此代码向令牌端点发出反向通道请求(不涉及浏览器)。
所以问题是,如何在令牌端点区分这个用户?我猜这个调用不存在会话,因为它是一个反向通道请求。
可以使用哪些方法来识别用户。可以在内存中存储 HashMap 键为 authorization_code 是理想的解决方案吗
将其存储在 HashMap
中是一种无法扩展的解决方案,因为内部内存不会跨服务器节点共享。
您必须将其存储在某种形式的持久存储中
- 一个SQL数据库
- 没有SQL 数据库
- 键值数据库
请注意,您不仅需要能够确定用户,还需要确定客户,因为客户不需要验证自己的身份来获取代码。还知道您将需要能够确定给定代码涵盖哪些范围,并检测代码的双重使用,并在双重使用的情况下撤销关联的访问令牌。
另一方面,您需要能够再次轻松忘记密码。它们是短期使用的,在 ttl 之后保留它们是没有用的。
您对存储您生成的访问令牌、刷新和 ID 令牌有类似的要求,因此构建也可用于这些的东西是有意义的。
谈论 authorization_code 资助类型。在 OpenID Connect 提供商的授权端点,我们向依赖方提供授权代码,然后他们使用此代码向令牌端点发出反向通道请求(不涉及浏览器)。 所以问题是,如何在令牌端点区分这个用户?我猜这个调用不存在会话,因为它是一个反向通道请求。 可以使用哪些方法来识别用户。可以在内存中存储 HashMap 键为 authorization_code 是理想的解决方案吗
将其存储在 HashMap
中是一种无法扩展的解决方案,因为内部内存不会跨服务器节点共享。
您必须将其存储在某种形式的持久存储中
- 一个SQL数据库
- 没有SQL 数据库
- 键值数据库
请注意,您不仅需要能够确定用户,还需要确定客户,因为客户不需要验证自己的身份来获取代码。还知道您将需要能够确定给定代码涵盖哪些范围,并检测代码的双重使用,并在双重使用的情况下撤销关联的访问令牌。
另一方面,您需要能够再次轻松忘记密码。它们是短期使用的,在 ttl 之后保留它们是没有用的。
您对存储您生成的访问令牌、刷新和 ID 令牌有类似的要求,因此构建也可用于这些的东西是有意义的。