3

我目前正在开发一个允许“授权码授予”的 Oauth 授权服务器,我想使用 PKCE,因为我已经看到它可能在 Oauth2.1 中,而且它似乎(有点)比经典的“授权码”更安全.

我还在开发一个使用 Vue.js 作为我的 Oauth 客户端的 SPA 应用程序。

我完成了 PKCE 的第一步:在客户端生成代码验证器和代码质询,并发送包含 client_id、response_type=code、redirect_uri、code_challenge 和 code_challenge_request 的 GET /authorize 请求。

我的“GET /authorize”请求返回客户端浏览器将遵循的 302 重定向代码。在这一步,由于重定向,我失去了客户端的上下文,因此我失去了在“POST /token”请求期间流程结束时需要的 code_verifier。

所以我不明白如何在 SPA 中使用 PKCE 流,我在互联网上没有发现任何相关内容,RFC 只是说“遵循重定向”和“使用代码验证器”,我不知道该怎么做那。

我想我可以将此 code_verifier 存储在不安全的 cookie 中,但我希望有更好的解决方案。

4

1 回答 1

-1

OIDC客户端库将通过一个衬垫为您完成此操作。SPA 安全性有很多棘手的领域,图书馆将为您完成繁重的工作。

我的资源

请注意,在我的 handleLoginResponse 方法中,您可以从登录重定向之前获取状态,并且您根本不需要编写任何 PKCE 代码。

于 2020-07-29T23:10:58.383 回答