我正在使用 PKCE 为我的 CLI 应用程序实现授权码授予流程 https://datatracker.ietf.org/doc/html/rfc8252#section-8.1
我从 CLI 启动了一个环回服务器来等待来自我的身份验证服务器的授权码:
$ mytool login
$ please visit: mysitethattalkstomyauthserver.com?local_port=65200
$ … awaiting auth code …
它运行正常,但我对代码验证器有疑问。我想让我的用户只需单击上面的 URL,然后让我的网站处理对身份验证代码的初始请求。但我需要初始请求中的代码验证器哈希。我应该从客户端 CLI 工具而不是我的网站生成它。
那么,我是否需要将该哈希值粘贴到用户点击的原始 URL 中?
$ please visit site.com?port=65200&challenge=<hash>
现在我有一个只有站点调用的实现
localhost:65200/code_challenge
并且 cli 提供了它生成的代码哈希。但这安全吗?需要额外执行调用本地环回服务器这一步骤来获取代码质询吗?
这里的目的是让用户点击的 URL 尽可能简单易读
CLI 客户端必须运行自己的 HTTP 服务器并像这样运行。
您不应尝试使用 Web 服务器,因为您的 CLI 将无法接收响应 URL。本地 HTTP 服务器在您的 CLI 技术攻击中启动,例如 Node.js 可以使用其内置的 HTTP 服务器。
还请注意(从您的评论中),您不能将 PAR 用于 CLI 客户端,这是一个公共客户端,无法安全地提供 PAR 所需的客户端凭据。