背景:
多个设备可以使用相同的客户端凭证,因此它们共享令牌,这可能会导致2个或更多设备尝试刷新令牌时出现竞争条件。设备标识符可以在标题中找到,因此自定义的
AuthenticationKeyGenerator
实现可以使用设备ID为每个设备生成令牌。设备ID可以作为附加参数存储在 OAuth2Request.getExtensions()
中。
问题:
如我所述,设备ID不来自GET / POST参数,因此不存在于 OAuth2Request.getRequestParameters()
中,但可以在标题中找到。但是, OAuth2Request
是在 DefaultOAuth2RequestFactory
( OAuth2RequestFactory
的实现)中创建的,该实现无法访问原始HTTP请求以从标题复制信息并将其添加到 OAuth2Request.getExtensions()
最佳方法是捕获标头并将其存储在 OAuth2Request.getExtensions()
中,以便 AuthenticationKeyGenerator
稍后将其用作键的一部分?