在无状态后端使用PKCE的OAuth授权代码流

ymzxtsji  于 2023-02-15  发布在  其他
关注(0)|答案(1)|浏览(200)

我目前正在开发一个解决方案,我需要使用OAuth提供程序进行授权,该提供程序使用PKCE授权码。我尝试从我的无状态API后端进行授权(PHP Laravel应该不相关)。
我面临的问题是PCKE发送一个从唯一的散列代码验证器创建的代码质询。在回调URL被命中并且我尝试从OAuth提供程序获取令牌之前,这一直工作正常。
当我请求获取令牌时,我需要发送前面的代码验证器来验证请求并接收访问令牌。
这导致了我的问题,由于我的API后端是无状态的,我无法在会话中存储初始代码验证器,所以当我向令牌URL发出请求时,我无法发送它。我已经通过将代码验证器硬编码为已知值来使其工作,但这违背了要点。
我的问题是,在一个无状态的后端,是否可以使用OAuth授权代码流和PKCE?

cbwuti44

cbwuti441#

如果您希望保留所描述的配置-您的PHP后端是OAuth2客户端,我将使用state auth请求参数(RFC)作为保存code_verifier的密钥,state参数将与auth代码一起返回给您。
因此,您为statecode_verifier生成随机(不同)值,并将它们作为键-值对保存在数据库(或其他地方)中。当来自OAuth2服务器的响应到来时,尝试通过从OAuth2服务器接收到的state值查找code_verifier
您还可以将Vue.js前端用作OAuth2客户机,它是有状态的,并在必要时向后端发送访问令牌。
访问令牌的生存期通常很短,因此如果您需要发出多个请求,则需要使用刷新令牌生成新的请求。在决定将OAuth2令牌保存在何处时请考虑这一点。

相关问题